ini介绍
ini文件是一种常见的配置文件格式,通常用来存储程序的配置信息,包括参数、选项等。ini文件的基本格式是由多个节(section)组成,每个节下包含多个键值对key=value。
注意:section不能重复,里面数据通过section去查找,每个seletion下可以有多个key和vlaue的键值对,注释用英文分号(;)
[test_ini]
default=12345
[mysqld]
ip=127.0.0.1
username=test
password=123
db_name=testdb
configparser
python3里面自带configparser模块来读取ini文件
1、导包
# 导包
import configparser
config = configparser.ConfigParser() # 类实例化
2.读取文件内容
config.read("data_ini.ini")
value = config['mysqld']['username']
print("第一种方法读取的值:",value)
# 第二种读取ini文件方式,通过get方法
value = config.get('mysqld','db_name')
print('第二种方法读取到的值:',value)
# 第三种读取ini文件方式,读取到一个section中的所有数据,返回一个列表
value = config.items('test_ini')
print('第三种方法读取到的值:',value)
执行结果:
通过上面两种方式,我们发现读取到的数据全部是str类型。如果我们想要得到指定数据类型的数据可以使用以下方法:
getint() getfloat() getboolean()
value = config.getint('mysqld','password')
print('这是第四种方法读取到的值:',value)
print('这是第四种方法读取到的值的数据类型:',type(value))
执行结果:
read返回的是如果能够加载此文件的话,则返回对应的文件名,且可以同时加载多个文件,多个文件以可迭代对象的形式存在即可
get_result=conf_read.read(["data_ini.ini","test.ini"])#加载文件后,其内容在configparser对象中,并没有在返回值中
print(get_result)
执行结果:
3.write写入
- write写入有两种方式,一种是删除原文件内容,重新写入:w
conf.write(open(cfgpath, “w”)) # 删除原文件重新写入
另外一种是在原文件基础上继续写入内容,追加模式写入:a
conf.write(open(cfgpath, “a”)) # 追加模式写入
- 在ini文件上追加写入一项section内容
import configparser
# 创建管理对象
conf = configparser.ConfigParser()
# 添加一个select
conf.add_section("teacher_info")
print(conf.sections())
# 往select添加key和value
conf.set("teacher_info", "name", "lisi")
conf.set("teacher_info", "sex", "male")
items = conf.items('teacher_info')
print(items) # list里面对象是元祖
with open("test.ini","a",encoding="utf-8") as fp:
fp.seek(2) #此处记得让流的指针设置到文件末尾,否则追加格式不好看
conf.write(fp) # 追加模式写入
执行结果:
运行后会发现ini文件最后新增了写入的内容了
4.set修改ini文件
需求:比如我想把前面test.ini文件里面的[default]下的test改成"默认"
import configparser
# 创建管理对象
conf = configparser.ConfigParser()
# 先读出来
conf.read("test.ini",encoding="utf-8")
# 修改section里面的值
conf.set("default", "test", "默认") # 写入中文
conf.write(open("test.ini", "r+", encoding="utf-8")) # r+模式
执行结果: