【发布时间】:2010-10-29 17:08:31
【问题描述】:
我正在尝试用 Python 编写一个程序,但我被告知要运行一个 .exe 文件。当这个 .exe 文件运行时,它会吐出大量数据,我需要将某一行打印到屏幕上。我很确定我需要使用 subprocess.popen 或类似的东西,但我是 subprocess 新手并且不知道。任何人都有一个简单的方法让我完成这项工作?
【问题讨论】:
标签: python subprocess stdout
我正在尝试用 Python 编写一个程序,但我被告知要运行一个 .exe 文件。当这个 .exe 文件运行时,它会吐出大量数据,我需要将某一行打印到屏幕上。我很确定我需要使用 subprocess.popen 或类似的东西,但我是 subprocess 新手并且不知道。任何人都有一个简单的方法让我完成这项工作?
【问题讨论】:
标签: python subprocess stdout
类似这样的:
import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
【讨论】:
如果您有兴趣在流程完成执行后打印输出,@Paolo 的解决方案是完美的。如果您想在进程运行时轮询输出,您必须这样做:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
while True:
out = process.stdout.readline(1)
if out == '' and process.poll() != None:
break
if out.startswith('myline'):
sys.stdout.write(out)
sys.stdout.flush()
【讨论】:
myline 是什么?
myline 只是一个例子。代码的那部分是识别要打印的特定输出行的地方。