我正在使用 python 脚本运行一个使用 subprocess.Popen
的进程,同时将输出存储在文本文件中并在控制台上打印。这是我的代码:
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in result.stdout.readlines(): #read and store result in log file
openfile.write("%s\n" %line)
print("%s" %line)
上面的代码工作正常,但它所做的是首先完成该过程并将输出存储在 结果 变量中。之后 for 循环 存储输出并打印它。
但我想要在运行时输出(因为我的过程可能需要几个小时才能完成,所以我在所有这些小时内都没有得到任何输出)。
那么是否有任何其他函数可以动态地(在运行时)给我输出,这意味着一旦过程给出第一行,它就应该被打印出来。
原文由 Niyojan 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里的问题是
.readlines()
在返回之前获取整个输出,因为它构建了一个完整的列表。直接迭代即可: