如何在Python中設置環境變量

我須要在python腳本中設置一些環境變量,而且我但願從python調用的全部其餘腳本(shell腳本)(將是子進程)來查看設置的環境變量。 該值爲數字。 python

若是我作os.environ["DEBUSSY"] = 1 ,它抱怨說1必須是字符串。 我還想知道一旦設置好如何在python(在腳本的後半部分)中讀取環境變量。 shell


#1樓

您可使用os.environ詞典來訪問環境變量。 函數

如今,我遇到的一個問題是,若是我嘗試使用os.system運行用於設置環境變量的批處理文件(在**。bat *文件中使用SET命令),則它實際上不會爲python環境設置它們(但對於使用os.system函數建立的子進程)。 爲了實際獲取在python環境中設置的變量,我使用如下腳本: this

import re
import system
import os

def setEnvBat(batFilePath, verbose = False):
    SetEnvPattern = re.compile("set (\w+)(?:=)(.*)$", re.MULTILINE)
    SetEnvFile = open(batFilePath, "r")
    SetEnvText = SetEnvFile.read()
    SetEnvMatchList = re.findall(SetEnvPattern, SetEnvText)

    for SetEnvMatch in SetEnvMatchList:
        VarName=SetEnvMatch[0]
        VarValue=SetEnvMatch[1]
        if verbose:
            print "%s=%s"%(VarName,VarValue)
        os.environ[VarName]=VarValue

#2樓

您應該將字符串值分配給環境變量。 spa

os.environ["DEBUSSY"] = "1" code

若是要讀取或打印環境變量,請使用 對象

print os.environ["DEBUSSY"] 繼承

此更改僅對分配了當前過程的當前過程有效,不會永久更改該值。 子進程將自動繼承父進程的環境。 進程

在此處輸入圖片說明


#3樓

os.environ行爲相似於python字典,所以能夠執行全部常見的字典操做。 除了其餘答案中提到的getset操做以外,咱們還能夠簡單地檢查鍵是否存在 圖片

Python 3

對於python 3,字典使用in關鍵字而不是has_key

>>> import os
>>> 'HOME' in os.environ  # Check an existing env. variable
True
...

Python 2

>>> import os
>>> os.environ.has_key('HOME')  # Check an existing env. variable
True
>>> os.environ.has_key('FOO')   # Check for a non existing variable
False
>>> os.environ['FOO'] = '1'     # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO')       # Retrieve the value
'1'

使用os.environ須要注意一件事:

儘管子進程從父進程繼承了環境,可是我最近遇到了一個問題,並弄清楚了,若是在運行python腳本時有其餘腳本更新環境,那麼再次調用os.environ 不會反映最新值

文檔摘錄:

首次導入os模塊時(一般是在Python啓動期間做爲處理site.py的一部分)捕獲了此映射。 此時間以後對環境所作的更改不會反映在os.environ中,除非直接經過修改os.environ進行更改。

os.environ.data是一個dict對象,它存儲全部環境變量,其中包含全部環境值:

>>> type(os.environ.data)  # changed to _data since v3.2 (refer comment below)
<type 'dict'>

#4樓

當您使用環境變量(添加/修改/刪除變量)時,一個好的作法是在函數完成時恢復之前的狀態。

您可能須要相似此問題中描述的modified_environ上下文管理器之類的東西來還原環境變量。

經典用法:

with modified_environ(DEBUSSY="1"):
    call_my_function()

#5樓

設置變量:

使用鍵的項目分配方法:

import os    
os.environ['DEBUSSY'] = '1'  #Environ Variable must be string not Int

獲取或檢查其是否存在,

因爲os.environ是一個實例,所以您能夠嘗試對象方式。

方法1:

os.environ.get('DEBUSSY') # this is error free method if not will return None by default

將得到'1'做爲返回值

方法2:

os.environ['DEBUSSY'] # will throw an key error if not found!

方法3:

'DEBUSSY' in os.environ  # will return Boolean True/False

方法4:

os.environ.has_key('DEBUSSY') #last 2 methods are Boolean Return so can use for conditional statements
相關文章
相關標籤/搜索