I was wondering whether or not it is considered a good style to call bash commands within a Python script using os.system(). I was also wondering whether or not it is safe to do so as well.
I know how to implement some of the functionality I need in Bash and in Python, but it is much simpler and more intuitive to implement it in Bash. However, I feel like it is very hackish to write os.system(“bash code”).
Specifically, I want to move all files that end with a certain extension to a directory.
In bash: *mv .ext /path/to/destination
In Python (Pseudocode):
for file in directory:
if file.endswith(“ext”):
move file to destination
In this case, what should I do?
First of all, your example uses mv, which is a program in coreutils, not bash.
Using os.system() calls to external programs is considered poor style because:
Look up glob, for shell-like pattern matching (globbing), and shutil, as others have already mentioned. Otherwise, everything you need is already in the standard libraries.
In addition, os.system() should not be used – take a look at the subprocess module instead.