在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 个回答
2
你可以使用 subprocess 这个模块,具体的用法可以参考这个链接。
from subprocess import Popen, PIPE
Popen("wc -l xh-2.txt", shell=True, stdout=PIPE).communicate()[0]
4
这个方法可以运行一个命令,并且把命令的输出结果以字节字符串的形式返回。
>>> import subprocess
>>> import shlex
>>> cmd = 'wc -l test.txt'
>>> cm = shlex.split(cmd)
>>> subprocess.check_output(cm,shell=True)
' 1 test.txt\n'
>>>