我试图操纵/剥离7zip命令的输出,并让用户了解进程的进度。我尝试使用的示例代码如下:
import subprocess
proc = subprocess.Popen(['7zip','arg', 'archive'],shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
line = proc.stdout.readline()
if line != '':
#Do some striping and update pyqt label
print "test:", line.rstrip()
sys.stdout.flush()
else:
break
然而,真正的问题是print
语句只在流程完成后打印stdout
。有没有一种方法可以逐行捕获stdout
,然后再次操作并打印?在
更新
更新了脚本以包括sys.stdout.flush()
是的,波本的家人。在
您可以查看文档here
它们给你流的文件描述符,你可以用它们来读取被调用程序的输出。在
相关问题 更多 >
编程相关推荐