configparser 是 Python 中一个用于处理配置文件的标准库,可以帮助你生成、读取和修改配置文件的内容
1. 生成配置文件
import configparser
# 创建一个配置文件对象
config = configparser.ConfigParser()
# 添加配置项和值
config['Section1'] = {'key1': 'value1', 'key2': 'value2'}
config['Section2'] = {'key3': 'value3'}
# 将配置写入到文件中
with open('config.ini', 'w') as configfile:
config.write(configfile)
代码将在当前路径下生成一个名为 config.ini 的配置文件,并将配置项和值写入其中,生成的配置文件内容如图:
2. 读取配置文件
import configparser
# 创建一个配置文件对象
config = configparser.ConfigParser()
# 从文件中读取配置
config.read('config.ini')
# 获取配置项的值
value1 = config.get('Section1', 'key1')
value2 = config.get('Section1', 'key2')
value3 = config.get('Section2', 'key3')
print(value1) # 输出:value1
print(value2) # 输出:value2
print(value3) # 输出:value3
通过调用 config.read('config.ini')
方法读取配置文件,并使用 config.get(section, option)
方法获取指定配置项的值。
3. 修改和删除配置文件内容
import configparser
# 创建一个配置文件对象
config = configparser.ConfigParser()
# 从文件中读取配置
config.read('config.ini')
# 修改配置项的值
config.set('Section1', 'key1', 'new_value')
# 删除配置项
config.remove_option('Section2', 'key3')
# 将修改后的配置写回到文件中
with open('config.ini', 'w') as configfile:
config.write(configfile)
通过调用config.set(section, option, value)
方法修改配置项的值,调用 config.remove_option(section, option)
方法删除配置项,并将修改后的配置重新写入到文件中。更新的配置文件如图:
4. 常见报错问题处理
; test.ini文件内容
[other]
A=%abcde%fg
# coding=utf-8
from configparser import ConfigParser
conf = ConfigParser()
conf.read('config.ini')
# 获取指定section的key的值
print(conf.get('other', 'A'))
4.1 报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position
该报错是因为代码中包含中文字符,读取配置文件的时候需要进行编码encoding
,将conf.read('config.ini')
修改为conf.read('config.ini', encoding='utf-8')
4.2 报错:configparser.InterpolationSyntaxError: ‘%’ must be followed by ‘%’ or ‘(’
该报错是因为value值包含了特殊字符%
引起,解决办法有两种:
- 取消
%
号的占位符功能,将%
修改为%%
修改后的配置文件如下:
; test.ini文件内容
[other]
A=%%abcde%%fg
- 将
ConfigParser
替换为RawConfigParser
修改后的代码如下:
# coding=utf-8
from configparser import RawConfigParser
conf = RawConfigParser()
conf.read('config.ini', encoding='utf-8')
# 获取指定section的key的值
print(conf.get('other', 'A'))