我正在为python中的bash命令编写一个gui包装器。运行bash命令时,前3-4行是常量,最后一行被覆盖以文本格式显示进度。我想将进度转换为基于python的gui的进度条。
如何定期检索bash命令的进度?所有其他类似的答案都会检索前几个常量行,但它们无法获取定期更改的最后一行。
答案 0 :(得分:1)
如果您使用process.stdout.readline()
阅读输入,则无法获取进度,直到整行打印到stdout。相反,你可以通过逐字符串地传输stdout来读取它,如下所示
import subprocess
import sys
process = subprocess.Popen("ls", stdout=subprocess.PIPE)
for c in iter(lambda: process.stdout.read(1), ''):
sys.stdout.write(c)