以下代码将获得执行另一个程序的命令行输出:
import subprocess
p = subprocess.Popen('ls', stdout=subprocess.PIPE)
print p.communicate()[0]
但是有些程序如 wget、ffmpeg 会在命令行中显示一个进度条,并且一直更新它的值,像这样:
12% [--- ] 105,691 50.6K/s eta 1h 43m
我尝试了上面的代码来获取 wget 的输出,但它失败了。在 wget 执行完成之前它无法获得输出,并且输出是一个空字符串。