subprocess 模块管窥
2017-03-08 本文已影响7人
苟雨
subprocess 提供给我们与系统交互和管道的能力,
运行命令,返回的是命令运行的信息,如果运行良好就返回0否则返回1
import subprocess
subprocess.call(['ls','-l'])
Out[5]:
0
与call()是一样的,但是如果返回的是1就将返回CalledProcessError(抛出错误)
subprocess.check_call('ls')
Out[7]:
0
check_output() 返回输出的内容,就是shell的output,如果返回1就会抛出错误
subprocess.check_output(['echo','hello world!'])
Out[11]:
'hello world!\n'
也可以将标准错误导出
subprocess.check_output(
"ls hello;exit 0",
stderr=subprocess.STDOUT,
shell=True)
Out[16]:
'ls: hello: No such file or directory\n'
在新的进程中运行命令
In [32]:
import shlex
args = shlex.split('echo $HOME') # 切分命令行
print args
p = subprocess.Popen(args) # Success!
print(p.stdout)
None
None
['echo', '$HOME']
None
使用Pope代替 os.system 和 os.popen
p = subprocess.Popen('pwd')
import os
os.system('pwd')
# os.popen('pwd')
Out[45]:
0