美文网首页数据工程师
subprocess 模块管窥

subprocess 模块管窥

作者: 苟雨 | 来源:发表于2017-03-08 21:56 被阅读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

相关文章

网友评论

    本文标题:subprocess 模块管窥

    本文链接:https://www.haomeiwen.com/subject/rieigttx.html