python操作ini配置文件

一、数据准备

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()追加就正常了。如下图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/JimmyAndRushking/article/details/82804690