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

标签 python linux bash

我正在为 python 中的 bash 命令编写一个 gui 包装器。运行 bash 命令时,前 3-4 行不变,最后一行被覆盖,以文本格式显示进度。我想将该进度转换为基于 python 的 gui 的进度条。

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

最佳答案

如果您正在使用 process.stdout.readline() 读取输入,那么在将整行打印到 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)

关于python - 在 Python 中定期获取 bash 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929746/

相关文章:

c - 管道没有被子进程读取?

linux - 在 Makefile 中设置环境变量

python - 如何在python中读取文本文件的任意行?

python - 子进程未按预期返回数据

python - Deeptools 找不到存在的文件

java - 如何获取 IBM Java 8 的调试信息包

c - 为什么 ELF 头和文本段一起加载到内存中?

python - 使用 Mutagen 在 MP4 文件中嵌入专辑封面

bash - sed 中奇数行的输出没有出现在单独的行上

bash - 在具有退出陷阱的脚本出现 shell 错误的情况下将退出代码传播给调用者