本文目录导读:

- INI 配置文件(使用
configparser) - JSON 配置文件(使用
json模块) - YAML 配置文件(需要安装
PyYAML) - 环境变量配置(使用
os或python-dotenv) - 自定义配置类(打包配置)
- 综合示例:支持多种格式
- 选择建议:
Python读取配置文件有多种方式,主要取决于配置文件的格式,以下是几种常见的方法:
INI 配置文件(使用 configparser)
示例配置文件 config.ini:
[DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 [bitbucket.org] User = hg [topsecret.server.com] Port = 50022 ForwardX11 = no
读取代码:
import configparser
# 创建配置解析器
config = configparser.ConfigParser()
# 读取配置文件
config.read('config.ini')
# 获取配置值
server_alive = config['DEFAULT']['ServerAliveInterval']
compression = config['DEFAULT']['Compression']
bitbucket_user = config['bitbucket.org']['User']
port = config['topsecret.server.com'].getint('Port') # 转换为整数
print(f"Server Alive Interval: {server_alive}")
print(f"Compression: {compression}")
print(f"Bitbucket User: {bitbucket_user}")
print(f"Port: {port}")
JSON 配置文件(使用 json 模块)
示例配置文件 config.json:
{
"database": {
"host": "localhost",
"port": 3306,
"user": "admin",
"password": "secret"
},
"app": {
"debug": true,
"log_level": "INFO"
}
}
读取代码:
import json
# 读取 JSON 配置文件
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
# 访问配置
db_host = config['database']['host']
db_port = config['database']['port']
debug_mode = config['app']['debug']
print(f"Database Host: {db_host}")
print(f"Database Port: {db_port}")
print(f"Debug Mode: {debug_mode}")
YAML 配置文件(需要安装 PyYAML)
安装:
pip install pyyaml
示例配置文件 config.yaml:
server: host: "0.0.0.0" port: 8080 database: host: "localhost" port: 5432 user: "postgres" password: "mypassword" logging: level: "INFO" file: "app.log"
读取代码:
import yaml
# 读取 YAML 配置文件
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
# 访问配置
server_host = config['server']['host']
server_port = config['server']['port']
db_host = config['database']['host']
print(f"Server: {server_host}:{server_port}")
print(f"Database: {db_host}")
环境变量配置(使用 os 或 python-dotenv)
使用 os.environ:
import os
# 读取环境变量
db_host = os.getenv('DB_HOST', 'localhost') # 第二个参数是默认值
db_port = os.getenv('DB_PORT', '3306')
debug = os.getenv('DEBUG', 'False').lower() == 'true'
print(f"DB Host: {db_host}")
print(f"DB Port: {db_port}")
print(f"Debug: {debug}")
使用 .env 文件(需要安装 python-dotenv):
pip install python-dotenv
示例 .env 文件:
DB_HOST=localhost
DB_PORT=3306
DB_USER=admin
DB_PASSWORD=secret123
DEBUG=True
读取代码:
from dotenv import load_dotenv
import os
# 加载 .env 文件
load_dotenv()
# 读取配置
db_host = os.getenv('DB_HOST')
db_port = os.getenv('DB_PORT')
debug = os.getenv('DEBUG', 'False').lower() == 'true'
print(f"Database Host: {db_host}")
print(f"Database Port: {db_port}")
print(f"Debug: {debug}")
自定义配置类(打包配置)
import configparser
import json
class Config:
def __init__(self, config_file='config.ini'):
self.config = configparser.ConfigParser()
self.config.read(config_file)
def get(self, section, key, default=None):
try:
return self.config[section][key]
except (KeyError, configparser.NoSectionError):
return default
def getint(self, section, key, default=0):
try:
return self.config[section].getint(key)
except (KeyError, configparser.NoSectionError):
return default
def getboolean(self, section, key, default=False):
try:
return self.config[section].getboolean(key)
except (KeyError, configparser.NoSectionError):
return default
# 使用示例
config = Config('config.ini')
db_host = config.get('database', 'host', 'localhost')
debug = config.getboolean('app', 'debug', False)
综合示例:支持多种格式
import os
import json
import configparser
import yaml
def load_config(config_file):
"""自动检测配置文件格式并加载"""
if not os.path.exists(config_file):
raise FileNotFoundError(f"配置文件 {config_file} 不存在")
ext = os.path.splitext(config_file)[1].lower()
if ext == '.ini':
config = configparser.ConfigParser()
config.read(config_file)
return config
elif ext == '.json':
with open(config_file, 'r', encoding='utf-8') as f:
return json.load(f)
elif ext in ['.yaml', '.yml']:
with open(config_file, 'r') as f:
return yaml.safe_load(f)
elif ext == '.env':
from dotenv import load_dotenv
load_dotenv(config_file)
return os.environ
else:
raise ValueError(f"不支持的配置文件格式: {ext}")
# 使用示例
config = load_config('config.json')
print(config)
选择建议:
- 小型项目:使用
JSON或INI格式,简单易懂 - 大型项目:使用
YAML格式,支持复杂数据结构 - 敏感信息:使用环境变量或
.env文件,避免硬编码密码 - 跨平台:环境变量是最好的选择
这样可以灵活地处理各种配置需求。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播