要从我的 Python 脚本启动程序,我使用以下方法:
def execute(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = process.communicate()[0]
exitCode = process.returncode
if (exitCode == 0):
return output
else:
raise ProcessException(command, exitCode, output)
因此,当我启动像 Process.execute("mvn clean install")
这样的进程时,我的程序会一直等到进程完成,然后才能获得程序的完整输出。如果我正在运行一个需要一段时间才能完成的进程,这很烦人。
我可以让我的程序通过在循环完成之前轮询进程输出来逐行编写进程输出吗?
我发现 这篇 文章可能是相关的。
原文由 Wolkenarchitekt 发布,翻译遵循 CC BY-SA 4.0 许可协议
一旦命令输出它们,您就可以使用 iter 来处理它们:
lines = iter(fd.readline, "")
。这是一个显示典型用例的完整示例(感谢@jfs 的帮助):