实时捕获命令的输出 - python

时间:2017-02-07 23:34:07

标签: python

我看到有几种解决方案可以在从python中调用时实时捕获命令输出。我有这样的案例。

run_command.py

import time
for i in range(10):
    print "Count = ", i
    time.sleep(1)

check_run_command.py - 这个尝试实时捕获run_command.py输出。

import subprocess

def run_command(cmd):
    p = subprocess.Popen(
        cmd,
        shell=False,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        stdin=subprocess.PIPE
    )

    while True:
        line = p.stdout.readline()
        if line == '':
            break
        print(line.strip())

if __name__ == "__main__":
    run_command("python run_command.py".split())

$ python check_run_command.py
(Waits 10 secs) then prints the following
Count =  0
Count =  1
....
Count =  9

我不确定为什么在这种情况下我无法实时捕获输出。我在其他线程中尝试了多个解决方案来解决同样的问题,但没有帮助。 run_command.py中的sleep是否与此有关。

我尝试运行ls命令,但无法确定输出是实时打印还是在处理完成后打印,因为命令本身很快就完成了。因此,我添加了一个睡觉。

0 个答案:

没有答案