python读取配置参数的多种方式
-
使用多个配置文件: 根据不同的环境(如开发、测试、生产)使用不同的配置文件。
-
使用环境变量: 利用操作系统的环境变量来获取参数。
-
使用命令行参数: 根据传入的命令行参数选择配置。
-
使用 JSON 或 YAML 文件: 配置文件可以使用 JSON 或 YAML 格式,支持多种环境的变量。
方法1、使用多个配置文件
假设有两个配置文件:config_dev.ini
和 config_prod.ini
。
config_dev.ini
:
[DEFAULT]
host = localhost
port = 3306
[DATABASE]
user = dev_user
password = dev_password
database = dev_db
config_prod.ini
:
[DEFAULT]
host = prod.db.server
port = 3306
[DATABASE]
user = prod_user
password = prod_password
database = prod_db
读取配置文件的代码:
import configparser
import os
# 获取环境变量
env = os.getenv('ENV', 'dev') # 默认为 'dev'
# 根据环境选择配置文件
config_file = f'config_{env}.ini'
config = configparser.ConfigParser()
config.read(config_file)
# 访问配置变量
host = config['DEFAULT']['host']
port = config.getint('DEFAULT', 'port')
user = config['DATABASE']['user']
password = config['DATABASE']['password']
database = config['DATABASE']['database']
print(f"Host: {host}")
print(f"Port: {port}")
print(f"User: {user}")
print(f"Password: {password}")
print(f"Database: {database}")
方法2、使用环境变量
您可以直接在操作系统中设置环境变量,然后在代码中读取它们。
设置环境变量(Linux/Mac):
export DB_USER=dev_user
export DB_PASSWORD=dev_password
读取环境变量的代码:
import os
user = os.getenv('DB_USER', 'default_user') # 默认为 'default_user'
password = os.getenv('DB_PASSWORD', 'default_password')
print(f"User: {user}")
print(f"Password: {password}")
方法 3:使用命令行参数
您可以使用 argparse
模块来处理命令行参数。
代码示例:
import argparse
parser = argparse.ArgumentParser(description='App Configuration')
parser.add_argument('--env', type=str, default='dev', help='Environment: dev or prod')
args = parser.parse_args()
if args.env == 'dev':
user = 'dev_user'
password = 'dev_password'
else:
user = 'prod_user'
password = 'prod_password'
print(f"User: {user}")
print(f"Password: {password}")
方法 4、使用 JSON 或 YAML 文件
你可以创建一个配置文件,支持多种环境的变量。
config.json
:
{
"dev": {
"host": "localhost",
"user": "dev_user",
"password": "dev_password"
},
"prod": {
"host": "prod.db.server",
"user": "prod_user",
"password": "prod_password"
}
}
读取 JSON 配置的代码:
import json
import os
# 获取环境变量
env = os.getenv('ENV', 'dev') # 默认为 'dev'
# 读取 JSON 配置文件
with open('config.json') as json_file:
config = json.load(json_file)
# 获取相应环境的配置
host = config[env]['host']
user = config[env]['user']
password = config[env]['password']
print(f"Host: {host}")
print(f"User: {user}")
print(f"Password: {password}")
作者:WYRM_GOLD