在python中获取长时间运行脚本的windows shell输出

2024-06-01 00:50:16 发布

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

我的问题与herehere描述的问题非常相似,但有一点没有涉及:假设我在windows上有一个外部longrunning.exe,我用subprocess.Popen()来调用它。我的exe现在打印一些命令,一段时间后,它进入环回模式并等待输入。当这种情况发生时,它会在windows命令提示符中每秒输出一个点。它确实将随后的点放在同一行上,而之前的所有输出都放在自己的行上。我似乎能够捕捉到之前的所有输出,但我不能得到这个输出,可能是由于一些缓冲正在进行(?)。如何在python控制台中获得这个输出?相关代码如下:

import subprocess
import sys

cmd = 'long_running.exe'
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, b''):
    sys.stdout.write(line)

Tags: import命令cmdherewindowsstdoutsysline