我試圖做一個簡單的命令讓我可以在Python中完全運行bash,包括輸出字符串。使用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')
獲取路徑是
現在0,我可以通過彌補這一切:
run('/bin/ls')
但是,這違背了使用此命令,這是忠實地模仿bash
殼的全部目的。
我該如何讓run()使用系統的PATH或者創建一個可以工作的等價函數?
(關於使用'shell=True'
的危險也沒有陳詞濫調,請,這是一個像ls
和ps axw
無害命令所有個人使用。)
的鉛(http://plumbum.readthedocs.org)庫源可能是很有幫助。 – peakxu
在工作和家中,os.getenv('PATH')在Python進程中返回什麼? – hd1
在家裏,這是荒謬的'/ Library/Frameworks/Python。上面列出的框架/版本/當前/ bin/ 。在工作中,這是比較明智的'在/ usr/local/sbin中:/ usr/sbin目錄:/ sbin目錄:在/ usr/local/bin目錄:在/ usr/bin中:/ bin中:在/ usr/X11R6/bin中:/軟件/ DIST /管理/箱中:/ opt/WWW /了htdig /斌:/ usr/lib中/ JAVA /斌:/ usr/lib中/ JAVA/JRE/bin中:在/ usr /共享/ TEXMF/bin' –