我已经阅读并尝试了 8 种不同的方法来回答有关此问题的几个问题。我在 python 中打开了一个进程并想读取它的输出,即使该进程尚未终止。该过程通常不会完成至少 1 分钟或直到发送中断。无论我尝试什么,我都无法让它读取输出。我知道我传递的命令和参数工作,因为当我将其更改为 subprocess.call(cmd, args) 时,它会将所有内容打印到屏幕上。我还检查了该进程是否正在使用 ps -ax 运行。这是我正在尝试的示例(cat /dev/random 与我的项目无关):
proc = subprocess.Popen(["cat", "/dev/random"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print("Process started.")
这是我迄今为止尝试过的失败的方法:
for line in iter(p.stdout.readline, ''):
strLine = str(line).rstrip()
print(">>> " + strLine )
sys.stdout.flush()
和
output, error = proc.communicate()
print output
和
while proc.poll() is None:
print("Still waiting.")
print(proc.stdout.readline(1))
我尝试了更多解决方案,这些解决方案是这种情况的变体,但没有运气。在不更改标准输出的情况下使用调用函数时,所有内容都会正确打印到控制台。我究竟做错了什么?
我正在使用 Python 2.6。