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

4 投票
2 回答
4631 浏览
提问于 2025-04-17 12:53

在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

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

撰写回答