Launch a shell command with in a python script, wait for the termination and return to the script
I've a python script that has to launch a shell command for every file in a dir:
import os
files = os.listdir(".")
for f in files:
os.execlp("myscript", "myscript", f)
This works fine for the first file, but after the "myscript" command has ended, the execution stops and does not come back to the python script.
How can I do? Do I have to fork()
before calling os.execlp()
?
subprocess: The
subprocess
module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes.
http://docs.python.org/library/subprocess.html
Usage:
import subprocess
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
process.wait()
print process.returncode
You can use subprocess.Popen
. There's a few ways to do it:
import subprocess
cmd = ['/run/myscript', '--arg', 'value']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in p.stdout:
print line
p.wait()
print p.returncode
Or, if you don't care what the external program actually does:
cmd = ['/run/myscript', '--arg', 'value']
subprocess.Popen(cmd).wait()