[英]How can I find out if os.popen is running the linux command in same shell?
我具有以下用於運行linux命令的python函數。 我正在運行一個創建一些環境變量的腳本,然后使用下面的函數運行linux命令,將所有這些變量再次移植到腳本中。 但是,似乎沒有使用第二條命令記錄第一條命令的環境變量。 我想知道這是因為os.popen
每次調用時都在不同的shell中運行命令嗎? 如果是這樣,我如何修改我的代碼或使用哪個函數以使所有內容都在同一shell中運行?
def execute(cmd):
'''Module to execute linux command'''
try:
proc = os.popen(cmd)
out = proc.read().strip()
return out
except Exception,err:
print "Exception occurred : %s"%str(err)
raise(str(err))
不推薦使用os.popen()
。 取而代之的是subprocess.Popen()
,或者對於您的用例來說甚至更好的是subprocess.check_output()
。 這些新方法采用一個可選的env
參數,該參數是環境變量名稱和值的決定。 您可以在那里傳遞任何您需要的東西。
或者,如果您真的想在外部設置變量並使它們“粘貼”在子export myvarname
在運行Python之前export
它們export
到shell中( export myvarname
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.