-
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") )