【问题标题】:Subprocess calls the wrong version of 'time'子进程调用错误版本的“时间”
【发布时间】:2017-02-19 20:50:33
【问题描述】:

我正在尝试通过

调用 'time' 的 shell 关键字版本
subprocess.check_output('time ls',stderr=subprocess.STDOUT,shell=True)

这是给我输出(即 /usr/bin/time 输出):

0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 1992maxresident)k
0inputs+0outputs (0major+85minor)pagefaults 0swaps

而不是shell关键字输出:

real    0m0.001s
user    0m0.000s
sys     0m0.000s

由于某种原因 subprocess.check_output 正在使用 /usr/bin/time 版本的时间。

谁能告诉我这里发生了什么?谢谢。

【问题讨论】:

    标签: python linux shell time subprocess


    【解决方案1】:

    这是因为time 也是 Bash 中的一个内置函数。所以你需要指定你想使用 Bash 作为你的 shell:

    print subprocess.check_output('time ls', stderr=subprocess.STDOUT,\
        shell=True, executable='/bin/bash')
    

    【讨论】:

    • 谢谢,我实际上是通过在命令的开头附加“bash -c”来解决这个问题以通过子进程,但这种方式更好。
    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多