查看从Python调用的长时间运行的外部进程的输出
我有一个非常长的运行过程,我想从Python程序调用它。这个过程向标准输出大量信息。我希望在命令行上看到被调用程序运行时的输出。我读过关于波本的书,并且试过查看从Python调用的长时间运行的外部进程的输出,python,popen,Python,Popen,我有一个非常长的运行过程,我想从Python程序调用它。这个过程向标准输出大量信息。我希望在命令行上看到被调用程序运行时的输出。我读过关于波本的书,并且试过 p = Popen(cmd, stdout=PIPE, stderr=PIPE) stdout, stderr = p.communicate() 和它的变体,但cmd的输出在cmd运行完成之前不会显示 当cmd运行时,我如何查看cmd的输出?我通过使用注释中提到的部分内容,并将其与以下内容结合起来,解决了这个问题 # read line
p = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
和它的变体,但cmd的输出在cmd运行完成之前不会显示
当cmd运行时,我如何查看cmd的输出?我通过使用注释中提到的部分内容,并将其与以下内容结合起来,解决了这个问题
# 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
我通过使用评论中提到的部分内容,并将其与以下内容结合起来,解决了这个问题
# 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
这个问题是密切相关的。我想它解决了你的问题:可能是重复的,那么我可以把我自己的帖子转换成评论吗,或者我需要一些荒谬的分数来做这件事吗?;)这几乎是一样的。唯一的区别是,您指向我的线程中的顶级答案将继续生成进程。我确实希望流程在完成之前停止,但我只希望看到过程中的输出。这个问题是密切相关的。我想它解决了你的问题:可能是重复的,那么我可以把我自己的帖子转换成评论吗,或者我需要一些荒谬的分数来做这件事吗?;)这几乎是一样的。唯一的区别是,您指向我的线程中的顶级答案将继续生成进程。我确实希望进程阻塞直到完成,但我只希望看到过程中的输出。