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

时间:2012-02-12 10:05:00

标签: python

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

import subprocess
subprocess.call("wc -l xh-2.txt",shell=True)

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

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

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

2 个答案:

答案 0 :(得分:4)

使用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'
>>>

答案 1 :(得分:2)

您可以使用子流程recipe

from subprocess import Popen, PIPE
Popen("wc -l xh-2.txt", shell=True, stdout=PIPE).communicate()[0]