subprocess

2018-06-09  本文已影响30人  孟轲666

执行命令,并返回执行状态。其中shell参数为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令。示例如下:

>>> a = subprocess.call(['df','-hT'],shell=False)
>>> a  = subprocess.call('df -hT',shell=True)
>>> print a
0 

用法与subprocess.call()类似,区别是,当返回值不为0时,直接抛出异常,示例如下:

>>> a = subprocess.check_call('df -hT',shell=True)
>>> print a
0
>>> a = subprocess.check_call('dfdsf',shell=True)
/bin/sh: dfdsf: command not found
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/subprocess.py", line 502, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'dfdsf' returned non-zero exit status 127

communicate(input=None):

与子进程交流,把该方法括号中的数据发送到子进程的标准输入stdin,
数据格式应该是字符串,若为None,则不给子进程发送数据。返回的元组从stdout,stderr中读取数据直到文件结尾。
communicate() returns a tuple (stdout, stderr).
返回包含两个元素的元组,第一是stdout输出的字符串,第二个是stderr的字符串,

out,err = std.communicate()

  • call(*args, **kwargs):

运行带参数的命令,等待命令执行完成,返回返回码的属性。

这里的参数与作为类Popen的构造参数一样,

只有命令时候用 call("cmd"),命令带参数时候要用list形式['cmd', 'args']

例如:

retcode = call('ls')

retcode = call(["ls", "-l"])

retcode = call( ("ls", "-l") )

上一篇 下一篇

猜你喜欢

热点阅读