美文网首页
subprocess

subprocess

作者: 孟轲666 | 来源:发表于2018-06-09 14:25 被阅读30次
  • subprocess.call()

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

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

用法与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
  • 类Popen的成员函数

communicate(input=None):

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

out,err = std.communicate()

  • Popen模块也定义了2个便捷函数

  • call(*args, **kwargs):

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

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

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

例如:

retcode = call('ls')

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

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

相关文章

网友评论

      本文标题:subprocess

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