一、数据准备
1.建一个config的文件夹
2.在config文件夹下,新建一个cfg.ini文件
选中config文件夹,点击鼠标右键,new----> file,在文件名称输入框中输入cfg.ini,点击确定。
3.在cfg.ini中填入数据,如下图
4.cfg.ini添加的数据不要带引号 ’ ’ 或 " ", 读取配置文件中的数据是字符串。
二、操作ini配置文件
在config文件夹下建一个readConfig.py的python文件,用于读取cfg.ini配置文件中的数据。
1.关键函数
read(cfgpath, encoding='utf-8') #读ini文件
sections() #获取所有的section, 返回list
items(section) #获取section中的内容
remove_option(section, option) #删除一个section中的item
add_section(section) #新增一个section
set(section, option, value) #往section里面新增key和value
conf.get(section, option) #获取section中option的键值
write(cfgpath, 'r+', encoding='utf-8') #写入内容
2.分步讲解
1)首先需要创建管理对象 conf ,然后读取ini文件。
如果不conf.read()读取ini文件,后面对cfg.ini文件进行sections()、items(section)等操作是没有数据的。
除非add_section(section)或set(section, option, value) 操作后,就会有数据。
#coding=utf-8
import configparser
import os
curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, 'cfg.ini') #cfg.ini路径
#创建管理对象
conf = configparser.ConfigParser()
#读ini文件
conf.read(cfgpath, encoding='utf-8')
2)对cfg.ini中原有的数据操作
#获取所有的section, 返回list
sections = conf.sections() #需要先read,否则没数据,返回空的list
print(sections) #['email']
items = conf.items('email')
print(items) #list里面对象是元祖
# 返回section中的option的键值
value = conf.get('email','sender')
print(value)
# 删除一个section中的item(以键值KEY为标识)
conf.remove_option('email', "psw") #打印删除成功了,cfg.ini文件中的psw没被删除
print(conf.items('email'))
#删除整个section,不会删除cfg.ini文件中中的section
conf.remove_section('email')
print(conf.sections()) #[]
3)新增section,key,option
#新增一个section
conf.add_section("info")
# 往section里面新增key和value
conf.set('info', 'name', 'zhangsan')
conf.set('info', 'company', 'tecent')
print(conf.sections())
print(conf.items('info'))
总结:以上方法都不会真正修改cfg.ini配置文件中的内容,只有当进行conf.write()操作时,才会真正修改cfg.ini中的内容。
4)添加新的section到cfg.ini配置文件中
#新增一个section
conf.add_section("info")
# 往section里面新增key和value
conf.set('info', 'name', 'zhangsan')
conf.set('info', 'company', 'tecent')
print(conf.sections())
print(conf.items('info'))
conf.write(open(cfgpath, 'a')) #追加模式写入,追加时不要read文件,否则会将ini文件中的内容全部追加
cfg.ini配置文件中内容如图:
info这个section确实被追加到配置文件中了,配置文件中却多出了一个[email],这是因为执行了conf.read()操作。注释掉conf.read()追加就正常了。如下图: