1. 程式人生 > 其它 >運用python-dotenv更好的管理Python專案中的敏感配置資訊

運用python-dotenv更好的管理Python專案中的敏感配置資訊

這幾天看到Github上面的一個Python模組python-dotenv,他可以幫你把Python專案中的一些賬號,密碼等敏感資訊存放在環境變數中,防止洩露。而我之前一般是用.ini檔案來解決這個問題的,而現在新學到的這個方法似乎比我那個老方法更簡單、便捷

專案地址:https://github.com/theskumar/python-dotenv

使用

  1. 安裝這個模組
    pip install python-dotenv

  2. 要使用這個模組我們需要在專案根目錄下建立一個.env檔案跟一個.py檔案

    .
    ├── .env
    ├── main.py
    
  3. .env檔案中填寫我們的敏感配置資訊

    # .env
    ACCOUNT=ADMIN
    PASSWORD=123456
    
  4. .py檔案中呼叫load_dotenv函式

    這個函式的作用是解析.env檔案,然後將裡面的變數載入為環境變數

    # main.py
    
    import dotenv
    
    dotenv.load_dotenv()
    

    之後就可以在函式裡面使用os.environos.getenv來調取環境變量了

    import os
    
    print(os.environ['ACCOUNT'])
    print(os.getenv('PASSWORD'))
    
    >>>
    ADMIN
    123456
    

擴充套件

load_dotenv

引數:

  • dotenv_path.env檔案的路徑
  • stream: 帶有.env
    內容的io.StringIO文字,當dotenv_path為None使用
  • verbose: 是否輸出.env檔案丟失的警告,預設為False
  • override: 是否覆蓋原系統環境變數,預設為False
  • encoding: 讀取檔案時的編碼

檔案規則格式

鍵可以不用引號包裹,也可以用單引號包裹

值可以不用引號包裹,也可以用單引號或雙引號包裹

等號左右的空格將會被忽略

沒有值的變數

如果單寫一個鍵,那麼它將等於None

但如果寫了一個鍵,並在後面加了一個等號key=,那麼它將等於空字串

變數

\({}包裹,例如\){NAME}

# .env
VAR1 = hello
VAR2 = world
VAR3 = ${VAR1},${VAR2}

註釋

文字前面新增 #

可以在行首寫,也可以在程式碼後面寫,類似於Python

多行

單引號或雙引號的值可以跨越多行,以下兩個例子所表達的值是相等的

FOO = "first line
second line"
FOO = "first line\nsecond line"

轉義

可以使用反斜槓進行轉義:

  • 單引號包裹:\\\'

  • 雙引號包裹:\\\'\a\b\f\n\r\t\v