在Python中调用系统命令并获取其输出结果,而不是退出状态

Cod*_*mer 5 python

在Python中,我想计算一个文件中的行数xh-2.txt

import subprocess
subprocess.call("wc -l xh-2.txt",shell=True)
Run Code Online (Sandbox Code Playgroud)

但这给了我退出状态,而不是命令的结果。

我知道命令print os.popen("wc -l xh-2.txt|cut -d' ' -f1").read()会完成这项工作,但是popen已贬值,为什么要使用read()?

在Python中调用系统命令并获取其输出结果而不退出状态的最佳方法是什么?

Ran*_*Rag 5

使用subprocess.check_output()

运行带有参数的命令,并以字节字符串形式返回其输出。

>>> import subprocess
>>> import shlex
>>> cmd = 'wc -l test.txt'
>>> cm = shlex.split(cmd)
>>> subprocess.check_output(cm,shell=True)
'      1 test.txt\n'
>>>
Run Code Online (Sandbox Code Playgroud)

  • 文件名将出现在输出中,因为当您在shell中独立运行`wc -l test.txt`时,文件名存在。您可以执行此`subprocess.check_output(cm).strip()。split('')[0]` (2认同)