我试图在python中运行并读取time
命令的输出。问题是,time
命令的工作方式不同的/bin/sh
和/bin/bash
像这样:如何在使用`subprocess.check_output`时正确引用python中的bash命令?
sh $ time ls
..
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 3856maxresident)k
0inputs+0outputs (0major+305minor)pagefaults 0swaps
和/bin/bash
版本是:
bash $ time ls
..
real 0m0.003s
user 0m0.000s
sys 0m0.000s
我需要后者,因为它比以前更精确。
因此我想在check_output
bash -c '<command>'
包裹的命令,但它给了我一个错误,例如:
>>> s.check_output(["bash", "-c", "'time ls'"])
bash: time ls: command not found
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['bash', '-c', "'time ls'"]' returned non-zero exit status 127
当我排除多余的报价,输出不捕获计时信息:
>>> s.check_output(['bash', '-c', 'time ls'])
real 0m0.002s
user 0m0.000s
sys 0m0.000s
'..'
而最后,当我用executable
参数,而不是包装,输出没有捕获任何:
>>> s.check_output(['time', 'ls'], shell=True, executable='/bin/bash')
real 0m0.000s
user 0m0.000s
sys 0m0.000s
我该怎么做?