0
点赞
收藏
分享

微信扫一扫

python高阶学习笔记:5 ​python解析ini格式文件

小禹说财 2024-06-09 阅读 10

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

python高阶学习笔记:5 ​python解析ini格式文件_加载

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+模式

执行结果:

举报

相关推荐

0 条评论