大家好谁能详细说明两者之间的区别
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
最佳答案
call
和 check_output
(与 check_call
一起)只是在后台调用 Popen
的实用函数。
调用
返回子进程的退出码check_call
如果退出代码不为零,则引发CalledProcessError
错误check_output
与上面相同,但也返回输出。
readlines
和communicate
的区别在于readlines
只是一个在缓冲区上创建的函数(stdout
) 而 communicate 是进程类的一种方法,因此它可以处理不同的异常,您可以在其中传递输入,并等待进程完成。
关于python - 子进程 Popen/call/check_output 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41632655/