17.1.3.3 Replacing os.system()

Python 2.5

17.1.3.3 Replacing os.system()

sts = os.system("mycmd" + " myarg")
==>
p = Popen("mycmd" + " myarg", shell=True)
sts = os.waitpid(p.pid, 0)

Notes:

  • Calling the program through the shell is usually not required.
  • It's easier to look at the returncode attribute than the exit status.

A more realistic example would look like this:

try:
    retcode = call("mycmd" + " myarg", shell=True)
    if retcode < 0:
        print >>sys.stderr, "Child was terminated by signal", -retcode
    else:
        print >>sys.stderr, "Child returned", retcode
except OSError, e:
    print >>sys.stderr, "Execution failed:", e

See About this document... for information on suggesting changes.