解析apt-get install输出以显示进度条

7 投票
2 回答
3982 浏览
提问于 2025-04-15 15:45

我正在写一个简单的Python图形界面脚本,用来在系统上执行一些简单的任务。其中有一部分工作是使用apt-get install来安装一些软件包。

在这个过程中,我想显示一个进度条,能够根据apt-get在终端中显示的下载百分比来更新进度。

但是!我找不到获取进度信息的方法。通过管道或重定向apt-get的输出,只能得到一些静态的行,显示每个软件包“下载完成”的消息,而通过subprocess.Popen()在我的脚本中读取也是一样。

我该如何从apt-get的输出中读取文件下载的百分比呢?

2 个回答

6

与其解析apt-get的输出结果,不如直接使用python-apt来安装软件包。根据我所知道的,它还有一些模块可以用来报告安装进度。

4

我常常说,当你需要获取子进程的持续输出时,应该使用 pexpect,而不是 subprocess 等其他方法。pexpect 让子进程误以为它是在一个终端上运行,这样子进程就会像在真实终端上一样输出信息……然后你可以把这些信息捕捉到,并把它们转换成你想要的任何花哨的输出!-)

撰写回答