python - 子进程 Popen/call/check_output 之间的区别

标签 python subprocess

大家好谁能详细说明两者之间的区别

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

最佳答案

callcheck_output(与 check_call 一起)只是在后台调用 Popen 的实用函数。

  • 调用返回子进程的退出码
  • check_call 如果退出代码不为零,则引发 CalledProcessError 错误
  • check_output 与上面相同,但也返回输出。

readlinescommunicate 的区别在于readlines 只是一个在缓冲区上创建的函数(stdout ) 而 communicate 是进程类的一种方法,因此它可以处理不同的异常,您可以在其中传递输入,并等待进程完成。

Read more here

关于python - 子进程 Popen/call/check_output 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41632655/

相关文章:

python - 将 daemontools 与生成子进程的 Python 脚本一起使用

python - ffmpeg 子进程问题

Ruby 生成过程,捕获 STDOUT/STDERR,同时表现得就像定期生成一样

python - 如何解析 JSON 文件中的特定键和值?

python - 解析并创建一个带有条件的新df

python - 将变量从 python 脚本传递到 C 程序(命令行参数)

python - subprocess.call 不等待进程完成

python - 使用具有向后依赖性的 scipy 进行曲线拟合

python - 在python中下载文件

Python-子进程