2009-07-14 40 views
8

我試圖執行一系列使用Pythons子進程模塊的命令,但是我需要在運行它們之前用導出設置shell變量。當然,shell看起來並不是持久的,所以當我稍後運行一個命令時,這些shell變量會丟失。Python:子進程中的持久化shell變量

有什麼辦法可以解決這個問題嗎?我可以創建一個/ bin/sh進程,但是如何獲取在那個下運行的命令的退出代碼?

回答

13

subprocess.Popen需要一個可選的命名參數env這是一個字典,用作子進程的環境(您稱之爲「shell變量」)。根據需要準備字典(您可以從os.environ的副本開始,並根據需要進行更改),並將其傳遞給您執行的所有subprocess.Popen調用。

+0

完美,謝謝。 – PeterBelm 2009-07-14 15:42:29

5

亞歷克斯是絕對正確的。舉個例子

current_env=environ.copy() 
current_env["XXX"] = "SOMETHING" #If you want to change some env variable 
subProcess.Popen("command_n_args", env=current_env)