python读取配置参数的多种方式

  1. 使用多个配置文件: 根据不同的环境(如开发、测试、生产)使用不同的配置文件。

  2. 使用环境变量: 利用操作系统的环境变量来获取参数。

  3. 使用命令行参数: 根据传入的命令行参数选择配置。

  4. 使用 JSON 或 YAML 文件: 配置文件可以使用 JSON 或 YAML 格式,支持多种环境的变量。

方法1、使用多个配置文件

假设有两个配置文件:config_dev.iniconfig_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

物联沃分享整理
物联沃-IOTWORD物联网 » python读取配置参数的多种方式

发表回复