configparser库会自动修改成小写的问题
configparser --- 配置文件解析器
直入主题
config.optionxform = lambda option: option #
问题描述
让我们准备一个非常基本的配置文件,它看起来是这样的:
test.ini
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
这里看起来很正常,每一个sections里面都是大写字母开头的
我们来修改一个这个test.ini
这里后缀不一定是ini,有的会写成conf
# 修改gui配置文件
def change_gui_conf(file, x, y, z):
config = configparser.ConfigParser()
config.read(file)
config[x][y] = z
with open(file, 'w') as configfile:
config.write(configfile)
if __name__ == '__main__':
change_gui_conf('test.ini','bitbucket.org', 'User', 'test')
这个时候我们再看一下test.ini
文件
[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes
[bitbucket.org]
user = test
[topsecret.server.com]
port = 50022
forwardx11 = no
全部变成小写了。通过官方文档也可以看到:
还要注意小节中的键大小写不敏感并且会存储为小写形式
解决办法python3
# 修改gui配置文件
def change_gui_conf(file, x, y, z):
config = configparser.ConfigParser()
config.optionxform = lambda option: option # 新增
config.read(file)
config[x][y] = z
with open(file, 'w') as configfile:
config.write(configfile)
if __name__ == '__main__':
change_gui_conf('test.ini','bitbucket.org', 'User', 'test')