(1) os.system
Only runs system commands in a sub-terminal, but cannot obtain the return information after command execution
system(command) -> exit_status
Execute the command (a string) in a subshell.
If executed under the command line, the result will be printed directly
>>> os.system('ls')
04101419778.CHM bash document media media py-django video
11.wmv books downloads Pictures python
all- 20061022 Desktop Examples project tools
(2) os.popen
This method not only executes the command but also returns the information object after execution
popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.
>>>tmp = os.popen('ls *.py').readlines()
>>>tmp
Out[21 ]:
['dump_db_pickle.py ',
'dump_db_pickle_recs.py ',
'db_db_shelve.py ',
'initdata.py ',
'__init__.py ',
'make_db_pickle.py ',
'make_db_pickle_recs.py ',
'make_db_shelve.py ',
'peopleinteract_query.py ',
'reader.py ',
'testargv.py ',
'teststreams.py ',
'update_db_pickle.py ',
'writer.py ' ]
The advantage is: assign the returned result to a variable to facilitate program processing.
(3) Use the module subprocess
>>> import subprocess
>>> subprocess.call(["cmd", "arg1", "arg2"],shell=True)
Get the return and output: 回import subprocess
p = subprocess.popen ('ls', shell = true, stdout = subprocess.pipe, stderr = subprocess.stdout) dout.readlines ():
Print line,
retval = p.wait()
(4) Use module commands
>>> import commands
>>> dir(commands)['__all__', '__builtins__', ' __doc__', '__file__', '__name__', 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Wed Jun 10 19:39:57 CST 2009'
>>>
>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')
Note: When the parameters or returns of the execution command contain Chinese characters, it is recommended to use subprocess. If you use os.popen, the following error will appear:
Traceback (most recent call last):
File "./test1.py ", line 56, inmain() File "./test1.py", line 45, in main
fax.sendFax()
File "./mailfax/Fax.py", line 13, in sendFax
os.popen (cmd)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-52: ordinal not inrange(128)