在Python中定期获取bash命令的输出

在Python中定期获取bash命令的输出,python,linux,bash,Python,Linux,Bash,我正在用python为bash命令编写gui包装器。运行bash命令时,前3-4行是常量,最后一行被覆盖以文本格式显示进度。我想把这个进度转换成一个进度条,再转换成一个基于python的gui 如何定期检索bash命令的进度?所有其他类似的答案都检索前几行常量,但它们无法获取周期性变化的最后一行。如果您使用process.stdout.readline()读取输入,则在将整行打印到stdout之前,它不会获取进度。相反,您可以通过如下所示逐字符流式传输来读取stdout import subpr

我正在用python为bash命令编写gui包装器。运行bash命令时,前3-4行是常量,最后一行被覆盖以文本格式显示进度。我想把这个进度转换成一个进度条,再转换成一个基于python的gui


如何定期检索bash命令的进度?所有其他类似的答案都检索前几行常量,但它们无法获取周期性变化的最后一行。

如果您使用
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)