基本使用方法
第一步:准备一份INI文件。如test1.ini
[ITEMS] item1=1 item2=2 item3=3 item4=4 [ITEM1] test1=aaa [ITEM2] test2=bbb [ITEM3] test3=ccc [ITEM4] test4=ddd
第二步:读取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)
第三步:输出结果
['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
使用方法:
conf = MyConfigParser()
其他的和原方法不变。