获取与蟒蛇的bash输出(Get bash output with python)

2019-10-19 23:25发布

我试图做一个简单的命令,将让我在Python完全运行bash中,包括输出字符串。

这个功能对我在工作中使用的系统工作很大:

import subprocess

def run(command):
    output = subprocess.check_output(command, shell=True)
    return output

不过,现在我使用它在国内和PATH变量不匹配,一个在我的终端。

所以,当我执行

run('ls')

我得到这个:

/bin/sh: ls: command not found

这是有道理的,因为胡说,在路上,我从运行得到

print run('/usr/bin/env') 

PATH=/Library/Frameworks/Python.framework/Versions/Current/bin/

现在,我可以通过弥补这一切:

run('/bin/ls')

但是,这违背了使用该命令,它是忠实地模拟的全部目的bash壳。

如何让我的run()使用系统的PATH或创建一个可以工作的同等功能?

(有关使用的危险也没有陈词滥调'shell=True' ,请,这是一个像无害的命令,所有个人使用lsps axw )。

Answer 1:

我要离开这个问题,因为我认为run()上面的命令是有用的,我无法找到SO类似的事情。

然而,我的解决方案是非常系统的具体。 问题是,我崇高的文本2中运行该脚本,并手动替换路径Python.sublime-settings

"path": "/Library/Frameworks/Python.framework/Versions/Current/bin/",

我这样做是因为我不得不让ST2找到正确版本的问题python 。 好了,这也将覆盖内ST2全系统PATH变量,从而阻断我像简单的shell程序的访问ls

删除了"path": ...从线Python.sublime-settings固定我的问题。

编辑

作为由mklement0建议 ,转产追加路径工程,以及:

"path": "$PATH:/Library/Frameworks/Python.framework/Versions/Current/bin/",


文章来源: Get bash output with python