python3读取ini文件_python3----configparser 读取 ini 文件

本文需求:读取配置文件。

配置文件有很多种,有各种格式,各种格式也有各自的应用场景。

网站上搜索了搜索了一圈,发现 python3 读取 ini 文件用的 configparser 模块。砸门就开始学习吧!

=================================================================

ini 文件介绍:

733a230208fa2b4120534c6b088954dd.png

[]包起来的称为 section(节点)

节点可包含多个键值对。键称为 option(选项),例如 section_1 节点下的 key1

=================================================================

读 configparser 模块源码:

__all__ :就好比你找别人借东西,你只能借,他答应借你的东西范围的借东西。(本质是列表)

_defalut_dict : 内置列表类的类名

DEFAULTSECT、MAX_INTERPOLATION_DEPTH 常量

ConfigParser类(继承RawConfigParser):

文档说明:ConfigParser实现了interpolation(插补)

set方法:给定section和option来创建option // 问:section存在、section不存在、option存在、option不存在的排列组合

add_section:在配置文件中创建一个新的section(section传一个str)

//此类没有初始化方法,说明继承自其调用RawConfigParser的__init__方法。

RawConfigParser(继承MutableMapping(可变映射)):

init方法中比较有意思的字段:

1.delimiters(定界符,说明key-value形式,不仅仅能用等号=,也能用冒号:)

2.comment_prefixes(注释的前缀,说明注释不仅仅能用#号,也能用分号;)

sections方法:获取所有的节点的名字

add_sections:添加节点

has_sections:判断是否存在节点

options:获取所有选项的名字

read**的方法:读输入源,输入源可以字典、文件、文件夹等形式

get方法:从指定的section、option获取value,如果section、option其一不存在就报错。

set方法:传入section、option,设置一个option,如果section不存在,提示异常。

write方法:就是一顿操作后,你需要调用这个方法,ini文件中才有你的数据。

其他类和方法有需求自行去了解。

==============================================================================

练习:

创建一个 ini 文件,例如 test.ini

9048f81bc7cd599e22503644beede5e5.png

ps:这里可以关注下 注释的形式和 key-value 的形式,选择你习惯的方式。

创建一个 ini_read.py 文件。

确定需求阶段:想一下,你尝尝会用到哪些操作,无非就是读和写。

1.修改值。

2.获取值。

附上代码:

ini_read.py

import configparser

class OperateIni:

"""a class which gets option's value and sets value"""

def __init__(self,filename=None):

self.cf = configparser.ConfigParser()

if filename is not None:

self.filename = filename

else:

self.filename = "test.ini" # 这里直接写文件,是因为ini_read.py和test.ini文件在同一目录下

self.cf.read(self.filename,"utf-8")

def get_value(self,section,option):

return self.cf.get(section,option)

def set_value(self,section,option,value):

if not self.cf.has_section(section):

self.cf.add_section(section)

self.cf.set(section, option, value)

else:

self.cf.set(section,option,value)

self._write()

def _write(self):

with open(self.filename,"w") as f:

self.cf.write(f)

if __name__ == '__main__':

# 获取值

opi = OperateIni()

res1 = opi.get_value("section_2","name")

print(res1)

# 修改值&&创建键值对

# section1存在 option不存在

opi.set_value("section_1", "name5", "9")

# section不存在 option不存在

opi.set_value("section_5", "name9", "9")

# # section1存在 option 存在

opi.set_value("section_5", "name9", "10")

test.ini:

[section_1]

key1 = value1

key2 = value2

key3 = value3

key4 = value4

[section_2]

key1 = value1

key2 = value2

key3 = value3

key4 = 545

name = 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值