当 7zip 从命令行运行时,它将使用一系列“%”符号打印进度条。
在 Python 中执行 7zip 时,我想捕获并打印此进度条。
我该怎么做呢?
我目前使用的 Python 代码:
from subprocess import Popen, PIPE
pipe = Popen('7za.exe a -tgzip "e:\\backup\\sch Testerr 2012 06 23 17-27.gzip" "E:/archiv"' , stdout=PIPE)
text = pipe.communicate()[0]
print text
最佳答案
你想要的是 sys.stdout.flush()。
但是,您可能需要在单独的线程上执行刷新,因为主线程可能会被阻塞,直到 Popen 中的底层进程完成。
编辑:使用布赖恩的答案来帮助(并避免多线程),我设想了一个这样的解决方案:
from subprocess import Popen, PIPE
pipe = Popen('7za.exe a -tgzip "e:\\backup\\sch Testerr 2012 06 23 17-27.gzip" "E:/archiv"' , stdout=PIPE)
# Assuming Python thread continues after POpen invoke (but before 7za is finished)
while (not pipe.poll()):
sys.stdout.flush()
time.sleep(1)
关于python - 从python执行时如何打印和捕获7zip的%进度标记?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11270524/