Learning how to run an external command from inside python is fairly straightforward. Python supports several methods for calling an external command. Determining which method to use depends on the use case, view our examples below of calling an external command.
Use subprocess.call()
The recommended way to execute an external command in Python is by using the subprocess module. The example below uses the call() method to invoke a command.
subprocess.call(['ls', '-l']) # prints total 20 -rwxr--r-- 1 xxxxxxx xxxxxxx 36 Feb 26 12:14 test.txt ...
Redirecting STDOUT to a File
To redirect the output from the command to a file, first open the file and then use the stdout parameter. View the example below.
with open('test.txt', 'w') as f:
subprocess.call(['date'], stdout=f)
# cat test.txt
Tue Feb 26 09:27:12 UTC 2018
Passing Input from STDIN to Command
To pass input into STDIN of the child process, first use call() to open the file. Then pass the handle using the stdin parameter.
with open('test.txt', 'r') as f: subprocess.call(['cat'], stdin=f) # prints the text in test.txt hello world this is the second line.
Executing a Shell Command
You can also pass the shell parameter into the call() method, shell=True. This allows the command line to be parsed by the shell. View the shell parameter being passed below.
subprocess.call('cat test.txt', shell=True) # prints hello world this is the second line.
Exiting Code from a Command
You can also exit code from a command. The value is returned from the function call().
print 'returncode: ', subprocess.call(['cat', 'test.txt']) # prints cat: test.txt: No such file or directory returncode: 1