代码之家  ›  专栏  ›  技术社区  ›  tinlyx

为什么subprocess.run()不显示完整的结果?

  •  0
  • tinlyx  · 技术社区  · 7 年前

    time bash中的命令(Ubuntu 18.04,python 3.6):

    $ /usr/bin/time -f '%E' sleep 1
    0:01.00
    

    subprocess.run() 对于同一命令,返回空值:

    >>> subprocess.run("/usr/bin/time -f '%E' sleep 1", stdout=subprocess.PIPE, shell = True)
    0:01.00
    CompletedProcess(args="/usr/bin/time -f '%E' sleep 1", returncode=0, stdout=b'')
    

    我对函数的参数不是很熟悉,我的问题是:

    为什么从中国回来 subprocess.run() 空的

    subprocess.run() 在这里

    1 回复  |  直到 7 年前
        1
  •  2
  •   tripleee    7 年前

    time 将其结果打印为标准错误,而不是标准输出。

    你也不需要或者不想要这个外壳。

    r = subprocess.run(["/usr/bin/time", "-f", "%E", "sleep", "1"],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
        # We expect textual output
        universal_newlines=True,
        # Properly raise an error on failure
        check=True)
    print(r.stderr)