python如何获取环境变量(转)
转载请注明出处:python—读取环境变量
python中经常会通过环境变量来进行参数传递和环境配置。
本章记录读取环境变量的方案
设置环境变量
首先设置环境变量
$ export ENV_PORT=3333$ echo $ENV_PORT3333
方案一 os读取
os直接读取
使用os获取环境变量字典
import osos.getenv('ENV_PORT')os.environ.get('ENV_PORT')os.environ['ENV_PORT']
打印所有环境变量,遍历字典
import osenv_dist = os.environ # environ是在os.py中定义的一个dict environ = {}for key in env_dist:print key + ' : ' + env_dist[key]
通过文件中转环境变量
方法如下:
import osimport ConfigParsercf = ConfigParser.ConfigParser()cf.read('test.conf')def resolveEnv(con):if con.startswith('ENV_'):return os.environ.get(con)return condef main():host = resolveEnv(cf.get('db', 'host'))port = resolveEnv(cf.get('db', 'port'))print 'host:%s' % hostprint 'port:%s' % portif __name__ == "__main__":main()
查看一下配置文件:
$ cat test.conf[db]host = 1.2.3.4port = ENV_PORT
读取配置文件:
$ python test.pyhost:1.2.3.4port:3333
方案二pyhocon
pyhocon是一个python的配置管理库
pyhocon的一个作用是可以直接在配置文件中使用${}的方式引用,pyhocon解析时会自动实现如上resolveEnv的逻辑,对应环境变量。
官网如下:
https://github.com/chimpler/pyhocon
配置文件如下:
default.conf
databases {# MySQLactive = trueenable_logging = falseresolver = null# you can use substitution with unquoted strings. If it it not found in the document, it defaults to environment variableshome_dir = ${HOME} # you can substitute with environment variables"mysql" = {host = "abc.com" # change itport = 3306 # defaultusername: scott // can use : or =password = tiger, // can optionally use a comma// number of retriesretries = 3}}
${HOME}在解析使用解析时会自动获取到环境变量中的HOME
使用方式
from pyhocon import ConfigFactoryconf = 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

浙公网安备 33010602011771号