boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

Python里configparser用法 配置文件解析模块configparser实战


avatar
悠悠站长 2025年6月6日 5

python的configparser模块用于读写.ini格式配置文件,适合基础配置管理。它支持节(section)和键值对结构,其中default节可被继承;使用configparser实例读取文件,并通过getint()、getboolean()等方法获取特定类型值;写入配置需手动打开文件并调用write()方法;此外,支持变量插值、保留大小写(optionxform=str)及设置fallback避免keyerror,适用于小型项目或脚本工具

在Python中处理配置文件时,configparser是一个非常实用的模块。它能读取和写入.ini格式的配置文件,结构清晰、使用简单,适合做程序的基础配置管理。


配置文件基本格式

configparser处理的是类似 .ini 文件的内容,这种文件通常由多个“节(section)”组成,每个节下面包含若干键值对

[DEFAULT] host = localhost port = 5432  [database] user = admin password = secret

上面的例子中,[DEFAULT] 是一个特殊节,它的配置会被其他所有节继承。比如,如果某个节没有定义 host,就会去 DEFAULT 中找。


基本用法:读取配置

要读取配置文件,首先需要创建一个 ConfigParser 实例,然后调用 read() 方法加载文件:

立即学习Python免费学习笔记(深入)”;

import configparser  config = configparser.ConfigParser() config.read('config.ini')  print(config['database']['host'])  # 输出: localhost print(config['database']['user'])  # 输出: admin

需要注意几点:

  • 节名和键名是大小写敏感的(默认情况下)
  • 所有值都会被当作字符串返回
  • 可以用 getint()、getboolean() 等方法获取特定类型

例如:

port = config.getint('database', 'port') is_debug = config.getboolean('DEFAULT', 'debug', fallback=False)

写入或修改配置

除了读取,configparser 还可以用来生成或修改配置文件:

config = configparser.ConfigParser()  config['DEFAULT'] = {     'host': 'localhost',     'port': '5432' }  config['database'] = {} config['database']['user'] = 'admin' config['database']['password'] = 'secret'  with open('config.ini', 'w') as f:     config.write(f)

这样就生成了一个新的配置文件。注意:

  • 添加节的时候要用字典方式赋值或者使用 add_section() 方法
  • 写入文件时必须手动打开并调用 write()
  • 不支持注释保存,原有注释会被丢弃

一些容易忽略的细节

  1. 变量插值
    configparser 支持变量引用,格式是 ${section:key}:

    [paths] home = /home/user log_dir = ${home}/logs

    在代码中可以直接读取 log_dir,会自动替换为完整路径。

  2. 区分大小写问题
    默认不区分大小写,可以通过设置 optionxform=str 来保留原始大小写:

    config = configparser.ConfigParser() config.optionxform = str  # 保持键名大小写不变
  3. fallback 参数
    获取值时推荐使用 get() 并提供 fallback,避免 KeyError

    user = config.get('database', 'username', fallback='guest')

基本上就这些。configparser 的功能不算复杂,但很实用,尤其适合小型项目或脚本工具的配置管理。只要注意变量插值、类型转换和大小写这几个点,就能用得很顺手。



评论(已关闭)

评论已关闭