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')
posted @ 2022-07-11 11:26  Tarzen  阅读(283)  评论(0编辑  收藏  举报