用Python Shell设置或获取环境变量的方法:
一、设置系统环境变量
1、os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型
2、os.putenv('环境变量名称', '环境变量值')
二、获取系统环境变量
1、os.environ['环境变量名称']
2、os.getenv('环境变量名称')
环境变量vi /etc/profile
……
export BDP_TEST=true
export BDP_ENV=test
python工程使用方法
import os
# 使用os.environ获取环境变量字典,environ是在os.py中定义的一个dict environ = {}
env_dist = os.environ
# 打印所有环境变量,遍历字典
for key in env_dist:
print key + ' : ' + env_dist[key]
# 判断环境变量是否包含
if 'BDP_ENV' in os.environ and os.getenv('BDP_ENV') == 'prod':
DB_CONFIG = '/data/BdpAirflowWorker/config/db_config.ini'
elif 'BDP_ENV' in os.environ and os.getenv('BDP_ENV') == 'test':
DB_CONFIG = '/data/BdpAirflowWorker/config/db_config_test.ini'
else:
DB_CONFIG = '/Users/tangtao/PycharmProjects/BdpAirflowWorker/config/db_config_test.ini'
用例:
1.在config目录下新建config/db_config.ini和config/db_config_test.ini文件,存储系统配置信息
配置文件(INI文件)由节(section)、键、值组成。配置文件中用的是等号,也可以用冒号
[gp_furion]
host = 10.9.155.161
port = 5432
user = api_crm
passwd = 38211639
database = furion
[gp_susuan]
host = 10.9.104.200
port = 5432
user = api_panshi
passwd = pan!@#shi34(+)
database = octopus_susuan
2.增加公共方法Utils/config.py
configParser 模块用于操作配置文件,创建一个对象使用对象的方法对指定的配置文件做增删改查 操作。
创建ConfigParser实例:config=ConfigParser.ConfigParser()
返回section节中,option的键值:config.get(section,option)
读取配置文件:config.read(filename)
import os
import configparser
if 'BDP_PROD' in os.environ:
DB_CONFIG = 'config/db_config.ini'
else:
DB_CONFIG = 'config/db_config_test.ini'
class bdp_config_parse:
def __init__(self, default_config):
self._config = configparser.ConfigParser()
self._config.read(default_config)
print default_config
print str(os.curdir)
def get(self,section, key):
return self._config.get(section, key)
def getint(self, scetion, key):
return self._config.getint(scetion, key)
db_conf = bdp_config_parse(DB_CONFIG)
3.使用环境变量配置
from Utils import config
class PrestoConnection:
HOST = config.db_conf.get('presto_susuan', 'host')
PORT = config.db_conf.getint('presto_susuan', 'port')
USER = config.db_conf.get('presto_susuan', 'user')
CATALOG = config.db_conf.get('presto_susuan', 'catalog')
SCHEMA = config.db_conf.get('presto_susuan', 'schema')
PASSWORD = config.db_conf.get('presto_susuan', 'passwd')
DATABASE = config.db_conf.get('presto_susuan', 'database')