Portable Process Control: The os Module
Python itself defines a few
process-manipulation functions that are portable across all
platforms, including Windows. As they are portable to Unix and other
operating systems, they operate at a high level and don’t cover
the range of functionality provided natively. The Python
os module provides a number of techniques for
starting new processes.
os.system
os.system
provides the most rudimentary support
for new processes. It takes a single argument (the command line of
the process to execute) and returns an integer “error
code.” For example:
>>> import os
>>> os.system("notepad.exe C:\\autoexec.bat")
0
>>>starts an instance of notepad, editing your autoexec.bat file. The exit code from the program is zero. Unfortunately, the result of zero is often misleading; the Windows command processor responsible for executing these commands usually refuses to pass the actual error code on, always reporting a success code of zero.
The single parameter can be anything that typically works from a
Windows command prompt. Thus, the system path is
searched for the program.
There are, however, a number of other limitations to this approach. First, if you execute this code from PythonWin (or any other GUI Python environment) you will notice that an empty command prompt opens. Windows knows you are running from a GUI, but isn’t smart enough to look at the program to execute to determine if it too is a GUI program; so it creates a new console for the program. This ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access