python - 当 Subprocess shell=False 时无法读取响应

标签 python subprocess

在下面的代码中,如果在 Windows 平台上执行,我将得到输出

import subprocess
COMMAND = " Application.exe arg1 arg2"
process = subprocess.Popen(COMMAND, stdout=subprocess.PIPE, stderr=None, shell=True)

while process.poll() is None:
 output = process.stdout.readline()
 print output,

输出>一些文本

但是如果我使用 shell=False 我不会得到输出如何在这种情况下获得响应。

最佳答案

当您设置shell=False时,您必须提供COMMAND作为包含程序名称和参数的列表:

使用shell=True:

COMMAND = "Application.exe arg1 arg2"

使用shell=False:

COMMAND = ["Application.exe", "arg1", "arg2"]

我建议您在任何情况下都避免将 subprocess.Popenshell=True 一起使用,以确保安全措施并使用 communicate()相反,只要有可能:

>>> import subprocess
>>> COMMAND = " Application.exe arg1 arg2".strip().split()
>>> process = subprocess.Popen(COMMAND, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False)

>>> output, error = process.communicate()
>>> print output

关于python - 当 Subprocess shell=False 时无法读取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794296/

相关文章:

python - (Python/Linux) 通过 python 或 os.system 命令无延迟地播放 wav 文件

python - Google App Engine (Python) - 邮件已发送但未收到

python - 在 PyML 中获取多类问题的召回率(灵敏度)和精度(PPV)值

python - 后台进程 subprocess.Popen with Pipe

python - 如何获取 grep 命令的输出(Python)

python - 从 CSV 文件中计算男性和女性的数量

python - 将使用 PyMC3 创建的模型绘制为图表

python - 使用 python 使用子进程从 7zip 存档中解压选定的文件

python : Open chrome with parameters

python - 将子进程与使用另一个版本的脚本一起使用