Tuesday 11 December 2018

shell - Calling an external command from Python



How do you call an external command (as if I'd typed it at the Unix shell or Windows command prompt) from within a Python script?


Answer



Look at the subprocess module in the standard library:



import subprocess
subprocess.run(["ls", "-l"])



The advantage of subprocess vs. system is that it is more flexible (you can get the stdout, stderr, the "real" status code, better error handling, etc...).



The official documentation recommends the subprocess module over the alternative os.system():




The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function [os.system()].




The Replacing Older Functions with the subprocess Module section in the subprocess documentation may have some helpful recipes.




For versions of Python before 3.5, use call:



import subprocess
subprocess.call(["ls", "-l"])

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...