Python 正在分析apt get install for进度条的输出

Python 正在分析apt get install for进度条的输出,python,progress-bar,subprocess,popen,apt-get,Python,Progress Bar,Subprocess,Popen,Apt Get,我正在编写一个简单的GUI Python脚本,以便在系统上执行一些简单的任务。其中一些工作包括安装一些软件包 在此过程中,我希望显示一个进度条,该进度条应随下载进度而更新,使用终端中apt get界面中显示的小百分比 但是!我找不到获取进度信息的方法。管道或重定向apt get的输出只会给出静态行,显示每个包的“已完成下载”消息,在我的脚本中通过subprocess.Popen()读取时也是如此 如何读取apt get的输出以获得下载文件的百分比?正如我经常说的,当需要获得子进程的连续输出时,使

我正在编写一个简单的GUI Python脚本,以便在系统上执行一些简单的任务。其中一些工作包括安装一些软件包

在此过程中,我希望显示一个进度条,该进度条应随下载进度而更新,使用终端中apt get界面中显示的小百分比

但是!我找不到获取进度信息的方法。管道或重定向apt get的输出只会给出静态行,显示每个包的“已完成下载”消息,在我的脚本中通过
subprocess.Popen()
读取时也是如此


如何读取apt get的输出以获得下载文件的百分比?

正如我经常说的,当需要获得子进程的连续输出时,使用,而不是子进程等来运行子进程。pexpect愚弄子流程,使其相信它正在终端上运行,因此子流程将提供它在实际终端上所提供的输出。。。您可以捕获它并将其转换为任何您想要的奇特输出

您可以使用python apt来安装软件包,而不是解析apt get的输出。AFAIK它还有用于报告进度的模块。

这有可能在我的C端口中使用posix popen()也可以工作吗?或者有类似的方法吗?
popen
会让子流程知道它的输出是一个管道,所以你可能运气不好,除非有足够好的命令让你要求他们“完全无缓冲的实时输出”,我认为apt get不在精英组中。要在Linux下用C实现一个“假终端”,请从pty(7)手册页开始,例如at-和,祝你好运(需要做很多工作!)。查看/usr/share/doc/python apt/examples/progress.py没有python,也没有libapt的巨大混乱,有什么方法可以做到这一点吗?