在开发程序时,你是否总在纠结:数据库密码写死在代码里不安全、参数改一次就要重新部署、不同环境的配置切换太麻烦…… 别担心,Python 的configparser 工具类就是为管理配置而生的 “配置管家”,它能轻松读写 INI 格式的配置文件,让参数管理变得灵活又安全,今天就来看看它的拿手好戏!
1. 创建配置文件:给参数建个 “数据库”
想把程序里的各种参数整理到一个文件里?用 configparser 写 INI 文件就像搭积木一样简单:
import configparser# 创建配置解析器
config = configparser.ConfigParser()# 添加配置段(类似字典的键)
config["数据库设置"] = {"host": "localhost","port": "3306","user": "root","password": "123456","dbname": "mydb"
}config["程序设置"] = {"debug": "True","log_level": "INFO","max_retries": "3"
}# 写入文件
with open("config.ini", "w", encoding="utf-8") as f:config.write(f)
运行后会生成一个结构清晰的 INI 文件:
[数据库设置]
host = localhost
port = 3306
user = root
password = 123456
dbname = mydb[程序设置]
debug = True
log_level = INFO
max_retries = 3
sections(配置段)就像文件夹,key-value 对就是具体的文件,层次分明,一目了然。
2. 读取配置文件:按需提取参数
需要用配置的时候,configparser 能像查字典一样快速找到对应的值:
import configparserconfig = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")# 读取字符串参数
db_host = config["数据库设置"]["host"]
print(f"数据库地址:{db_host}") # 输出:数据库地址:localhost# 读取数字参数(需要手动转换类型)
max_retries = int(config["程序设置"]["max_retries"])
print(f"最大重试次数:{max_retries}") # 输出:最大重试次数:3# 读取布尔值(注意INI中True会被读成字符串,需要转换)
is_debug = config["程序设置"].getboolean("debug")
print(f"调试模式:{is_debug}") # 输出:调试模式:True
它还提供了getint() getfloat()等方法,自动转换参数类型,不用再手动写int() float()了,贴心又高效。
3. 修改配置文件:动态更新参数
配置需要更新?不用手动打开文件修改,代码里就能搞定:
import configparserconfig = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")# 修改现有参数
config["程序设置"]["log_level"] = "DEBUG"# 添加新参数
config["程序设置"]["timeout"] = "30"# 添加新配置段
config["邮件设置"] = {"smtp_server": "smtp.qq.com","port": "465"
}# 保存修改
with open("config.ini", "w", encoding="utf-8") as f:config.write(f)
运行后,配置文件会自动更新,新增的 “邮件设置” 和 “timeout” 参数会乖乖躺在文件里,比手动编辑靠谱多了。
4. 进阶技巧:处理复杂场景
面对多环境配置、默认值设置等场景,configparser 也有妙招:
import configparser# 支持默认值的配置解析器
config = configparser.ConfigParser(defaults={"log_level": "WARNING","timeout": "10"
})# 读取多个配置文件(后读的会覆盖前面的)
config.read(["base_config.ini", "dev_config.ini"], encoding="utf-8")# 检查配置是否存在
if "测试环境" in config:print("测试环境配置已加载")# 遍历所有配置段和参数
for section in config.sections():print(f"\n【{section}】")for key, value in config.items(section):print(f"{key} = {value}")
通过读取多个配置文件,可以轻松实现 “基础配置 + 环境配置” 的叠加,比如base_config.ini放通用参数,dev_config.ini放开发环境特有参数,部署时只需切换环境配置文件,灵活又安全。
总结:配置管理的 “万能钥匙”
configparser 虽然简单,却解决了程序配置的大问题:参数和代码分离,修改配置不用改代码;INI 格式直观易懂,非技术人员也能轻松编辑;支持多文件叠加,轻松应对多环境部署。
无论是小脚本还是大型应用,用 configparser 管理配置都能让程序更灵活、更安全、更好维护。下次写程序时,别再把参数藏在代码里了,让这位 “配置管家” 帮你打理一切吧!