python--讀取環境變數
阿新 • • 發佈:2018-12-28
轉載請註明出處:python–讀取環境變數
python中經常會通過環境變數來進行引數傳遞和環境配置。
本章記錄讀取環境變數的方案
設定環境變數
首先設定環境變數
$ export ENV_PORT=3333
$ echo $ENV_PORT
3333
方案一 os讀取
os直接讀取
使用os獲取環境變數字典
import os
os.getenv('ENV_PORT')
os.environ.get('ENV_PORT')
os.environ['ENV_PORT']
列印所有環境變數,遍歷字典
import os env_dist = os.environ # environ是在os.py中定義的一個dict environ = {} for key in env_dist: print key + ' : ' + env_dist[key]
通過檔案中轉環境變數
方法如下:
import os import ConfigParser cf = ConfigParser.ConfigParser() cf.read('test.conf') def resolveEnv(con): if con.startswith('ENV_'): return os.environ.get(con) return con def main(): host = resolveEnv(cf.get('db', 'host')) port = resolveEnv(cf.get('db', 'port')) print 'host:%s' % host print 'port:%s' % port if __name__ == "__main__": main()
檢視一下配置檔案:
$ cat test.conf
[db]
host = 1.2.3.4
port = ENV_PORT
讀取配置檔案:
$ python test.py
host:1.2.3.4
port:3333
方案二pyhocon
pyhocon是一個python的配置管理庫
pyhocon的一個作用是可以直接在配置檔案中使用${}的方式引用,pyhocon解析時會自動實現如上resolveEnv的邏輯,對應環境變數。
官網如下:
https://github.com/chimpler/pyhocon
配置檔案如下:
default.conf
databases { # MySQL active = true enable_logging = false resolver = null # you can use substitution with unquoted strings. If it it not found in the document, it defaults to environment variables home_dir = ${HOME} # you can substitute with environment variables "mysql" = { host = "abc.com" # change it port = 3306 # default username: scott // can use : or = password = tiger, // can optionally use a comma // number of retries retries = 3 } }
${HOME}在解析使用解析時會自動獲取到環境變數中的HOME
使用方式
from pyhocon import ConfigFactory
conf = ConfigFactory.parse_file('samples/database.conf')
host = conf.get_string('databases.mysql.host')
same_host = conf.get('databases.mysql.host')
same_host = conf['databases.mysql.host']
same_host = conf['databases']['mysql.host']
port = conf['databases.mysql.port']
username = conf['databases']['mysql']['username']
password = conf.get_config('databases')['mysql.password']
password = conf.get('databases.mysql.password', 'default_password') # use default value if key not found
轉載請註明出處:python–讀取環境變數