Python:在执行之前检查shell命令是否存在

Gab*_*ira 7 shell python process

我正在尝试找到一种方法来在执行之前检查 shell 命令是否存在。

例如,我将执行命令 ack-grep。所以,我正在尝试这样做:

导入子流程
from subprocess import PIPE

cmd_grep = subprocess.Popen(["ack-grep", "--no-color", "--max-count=1", "--no-group", "def run_main", “../cgedit/”],stdout=PIPE,stderr=PIPE)

比,如果我执行

cmd_grep.stderr.read()

我收到像输出一样的“”。但我的路径上没有 ack-grep 命令。那么,为什么 Popen 没有将错误消息放在我的 .stderr 变量上?

另外,有没有更简单的方法来完成我想做的事情?

Stu*_*der 5

您可以使用Python 3 下的subprocess模块或Python 2 下的命令模块,如下所示:

状态,结果 = subprocess.getstatusoutput("ls -al")

状态,结果=commands.getstatusoutput(“ls -al”)

然后测试 的值status

来自网站的示例:

>>> 导入子流程
>>> subprocess.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> subprocess.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: 没有这样的文件或目录')
>>> subprocess.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: 未找到')