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 ']
这种调用方式是通过管道的方式来实现,返回值是执行过程中的输出内容。
2.commands
代码示例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推荐的用法,比较复杂,支持和子进程交互等强大功能。