python - 使用python获取pv的输出

标签 python subprocess

有没有办法在 python 中使用程序 pv 来获取操作的进度?

到目前为止,我有以下内容:

    p0 = sp.Popen(["pv", "-f", args.filepath],
                  bufsize=0,
                  stdout=sp.PIPE,
                  stderr=sp.PIPE)
    p1 = sp.Popen(["awk", "{print $1, $2, $1, $3, $4 }",  "{}".format(args.filepath)],
                   stdout=sp.PIPE,
                   stdin=p0.stdout)

但是我无法从 p0 获得连续输出。我试过:

    for line in p0.stderr:
        print("line:", line)

但这会等待进程完成,然后只打印来自 pv 的最后一个进度报告。有谁知道我怎样才能让它打印不断更新的状态?

最佳答案

尝试从 p0.stderr 读取

pv 保持 stdout 不变,它只写入 stderr

关于python - 使用python获取pv的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39274976/

相关文章:

rust - 如何在Rust的子过程中准备stdout/stderr

python - subprocess.check_output 返回码

Python3/Linux - 在默认编辑器中打开文本文件并等待完成

python - 鹡鸰中的多级分类

python - 如何制定 Xpath 表达式以从子节点获取属性?

python - 在函数内运行异常 - Python

bash - bash 变量何时导出到子 shell 和/或可由脚本访问?

python - Windows 上的异步子进程

python - 如何在 python 中使用 urllib2 加快获取页面的速度?

python - 脚本不会切换到另一个用户