大家好,每个人都可以详细说明
之间的区别subprocess.Popen
subprocess.call
subprocess.check_output
如果可能的话,请解释之间的区别
x.readlines()
与x.communicate()
?
,区别
import subprocess
from subprocess import PIPE
ls = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE)
**out = ls.stdout.readlines()**
print out
和
import subprocess
from subprocess import PIPE
ls = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE)
out = ls.communicate()
print out
答案 0 :(得分:2)
call
和check_output
(以及check_call
)只是实用程序函数,可以在Popen
下调用。
call
返回子进程的退出代码check_call
会引发CalledProcessError
错误check_output
与上述相同,但也会返回输出。 readlines
和communicate
之间的区别在于readlines
只是在缓冲区(stdout
)上创建的函数,而communication是一个进程类的方法,因此它可以处理不同的异常,您可以在其中传递输入,并等待该过程完成。