Python执行系统命令的3种方法

如何在python中调用系统命令,python提供了很多的办法,根据不同的需求可以选择不同的方式,这里以代码示例为主,具体的可以去pydoc上搜索查找用法。

 
 
>>> import os  
>>> os.system("date")  
Wed Jun 10 19:34:23 CST 2009  
0  
>>>
 
其实是执行shell命令,返回值是returncode。
 
 
代码示例2
>>>tmp = os.popen('ls *.py').readlines()
>>>tmp
Out[21]:
['dump_db_pickle.py ',
'update_db_pickle.py ',
'writer.py ']
 
这种调用方式是通过管道的方式来实现,返回值是执行过程中的输出内容。
 
 
 
代码示例3
>>> 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') 
 
这种方式的优点是容易获得外部命令的输出与returncode
 
 
This module intends to replace several other, older modules and functions, such as: os.system、os.spawn*、os.popen*、popen2.*、commands.*。通过创建子进程执行系统命令。
 
示例代码4 
>>> import subprocess  
>>> Popen = subprocess.Popen(["date"])  
Wed Jun 10 19:48:41 CST 2009  
>>> Popen.pid  
24723  
>>>  
 
 
示例代码5
>>> subprocess.call (["cmd", "arg1", "arg2"],shell=True)
 
 
示例代码6
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
    print line,
retval = p.wait()
 
 
这个是python推荐的用法,比较复杂,支持和子进程交互等强大功能。
 
 
 
 

Leave a Comment.