在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中调用系统命令并获取其输出结果,而不是退出状态的最佳方法是什么?
答案 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'
>>>
答案 1 :(得分:2)
您可以使用子流程recipe
from subprocess import Popen, PIPE
Popen("wc -l xh-2.txt", shell=True, stdout=PIPE).communicate()[0]