Python基础之读取ini文件

基本使用方法

第一步:准备一份INI文件。如test1.ini

[ITEMS]
item1=1
item2=2
item3=3
item4=4

[ITEM1]
test1=aaa

[ITEM2]
test2=bbb

[ITEM3]
test3=ccc

[ITEM4]
test4=ddd
View Code

第二步:读取INI文件内容。ReadINI.py

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File    : six-dialog_design -> ReadINI.py
@IDE     : PyCharm
@Author  : zihan
@Date    : 2020/6/2 14:35
@Desc    :
================================================="""
import configparser

conf = configparser.ConfigParser()
conf.read("./test1.ini")

sections = conf.sections()
print(sections)

options = conf.options('ITEMS')
print(options)

items = conf.items('ITEMS')
print(items)

value = conf.get('ITEMS', 'item1')
print(value)
View Code

第三步:输出结果

['ITEMS', 'ITEM1', 'ITEM2', 'ITEM3', 'ITEM4']
['item1', 'item2', 'item3', 'item4']
[('item1', '1'), ('item2', '2'), ('item3', '3'), ('item4', '4')]
1

总结:第一个是获取所有的section,第二个是获取当前section下面的key,第三个是获取当前section下面的键值对,第四个是获取相应section,key的值。

问题解决

1. INI文件有中文

如果ini文件里面有中文的话,可能会报如下错误

UnicodeDecodeError: 'gbk' codec can't decode byte 0x87 in position 18: illegal multibyte sequence

解决办法:conf.read("./test1.ini", encoding="utf-8")

当然,是否填的是utf-8得自己试试,没准gbk啥的。

2. INI中的key读取出来都是小写

如果自己写的key并不全是小写,但是使用这个库将自己的库读出来,会发现打印出来的全是真实key的小写

解决办法:重写configparser库

class MyConfigParser(configparser.ConfigParser):
    def __init__(self, defaults=None):
        configparser.ConfigParser.__init__(self, defaults=defaults)

    def optionxform(self, optionstr):
        return optionstr
View Code

使用方法:

conf = MyConfigParser()

其他的和原方法不变。

原文地址:https://www.cnblogs.com/smart-zihan/p/11883699.html