12

我正在尝试用 Python 编写一个程序,并被告知运行一个 .exe 文件。当这个 .exe 文件运行时,它会吐出大量数据,我需要将某一行打印到屏幕上。我很确定我需要使用subprocess.popen或类似的东西,但我是 subprocess 的新手并且不知道。任何人都有一个简单的方法让我完成这项工作?

4

2 回答 2

27

如果您有兴趣在流程完成执行后打印输出,@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()
于 2009-05-28T20:52:54.580 回答
21

像这样的东西:

import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
于 2009-05-28T20:49:38.363 回答