如何捕获子进程的标准输出?

12 投票
2 回答
16530 浏览
提问于 2025-04-15 11:54

我正在用Python写一个程序,听说我需要运行一个.exe文件。当这个.exe文件运行时,它会输出很多数据,我需要把其中某一行打印到屏幕上。我觉得我可能需要用到 subprocess.popen 或者类似的东西,但我对这个subprocess还不太了解,也不知道该怎么做。有没有简单的方法可以帮我完成这个任务?

2 个回答

28

@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()
22

像这样:

import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]

撰写回答