簡體   English   中英

使用python獲取bash輸出

[英]Get bash output with python

我試圖做一個簡單的命令,讓我可以在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 shell。

如何使run()使用系統的PATH或創建一個等效的函數,該函數可以正常工作?

(請不要在乎使用'shell=True'的危險。這全是個人使用,使用lsps axw等無害的命令。)

我離開這個問題是因為我認為上面的run()命令很有用,而我在SO上找不到任何類似的東西。

但是,我的解決方案非常針對系統。 問題是,我正在Sublime Text 2中運行此腳本,並手動將Python.sublime-settings的路徑替換為

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

我這樣做是因為我在讓ST2查找正確版本的python遇到問題。 好的,這還會覆蓋ST2中的系統范圍的PATH變量,從而阻止了我對ls類的簡單shell程序的訪問。

Python.sublime-settings刪除"path": ...行解決了我的問題。

編輯

mklement0建議 ,更改行以追加路徑也可以:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM