从 python 执行 cmd 并获得连续输出

Execute cmd from python and get continuous output

这是我的问题:我需要从 python 执行一个 cmd 命令,该命令执行得不是很快,它会 运行 更长的时间。我需要的是#1 执行命令并#2 获取该命令的连续输出的方法。

输出示例:
一些文字...(然后等待大约半分钟)
一些其他文字...(等待一段时间)
更多文字...

你明白了,输出大约每 30 秒出现一次。我需要捕获所有输出并对它们进行处理。有办法吗?

我知道我可以使用 os.system('command') 执行命令,但我正在努力寻找读取输出的方法!

this answer 中给出了一个简单的解决方案。 在 python 3 中它会是这样的:

#!/usr/bin/env python3
import subprocess

proc = subprocess.Popen('./your_process', stdout=subprocess.PIPE)

while True:
    line = proc.stdout.readline()
    if not line:
        break
    else: 
        # Do whathever you need to do with the last line written on 
        # stdout by your_process
        print("doing some stuff with...", line)
        print("done for this line!")

当然,您仍然需要考虑生产者进程如何缓冲 stdout,即子进程是否类似于

#include <stdio.h>
#include <unistd.h>

int main()
{
    for (int i = 1; i < 10000000; i++) {
        printf("ping");
        sleep(1);
    }
}

消费者脚本只会一起读取很多“ping”(这可以通过循环中的 fflush(stdout) 来解决。)

可以在 this answer 中找到更复杂的解决方案。