查看从Python调用的长时间运行的外部进程的输出

1 投票
1 回答
1029 浏览
提问于 2025-04-17 02:38

我有一个运行时间很长的程序,我想从一个Python程序中调用它。这个程序会输出很多信息到标准输出(stdout)。我希望在命令行中看到这个被调用程序的输出,能够实时看到它的运行情况。我了解过Popen,并尝试过

p = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()

以及其他一些变体,但命令行的输出直到命令执行完才会显示出来。

我该如何在命令运行时查看它的输出呢?

1 个回答

1

我通过参考评论中提到的一部分内容,结合下面的内容,找到了这个问题的解决办法。

# read line without blocking
while not p.poll():
    try: 
        line = q.get_nowait() # or q.get(timeout=.1)
    except Empty:
        pass # Do nothing
    else: # got line
        print line

撰写回答