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

2024-09-28 18:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python编写一个程序,我被告知要运行一个.exe文件。当这个.exe文件运行时,它会吐出很多数据,我需要在屏幕上打印出一行。我很确定我需要使用subprocess.popen或类似的东西,但我对子流程还不熟悉,也不知道。有没有人能给我一个简单的方法来完成这件事?


Tags: 文件数据方法程序屏幕流程exesubprocess
2条回答

像这样的:

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

相关问题 更多 >