Python中ConfigParser模块示例详解
作者:牛油菠蘿包 发布时间:2022-08-08 01:32:11
1. 简介
有些时候在项目中,使用配置文件来配置一些灵活的参数是比较常见的事,因为这会使得代码的维护变得更方便。而ini配置文件是比较常用的一种,今天介绍用ConfigParser模块来解析ini配置文件。
2. ini配置文件格式
# 这是注释
; 这也是注释
[section1]
name = wang
age = 18
heigth = 180
[section2]
name = python
age = 19
3. 读取ini文件
configparser模块为Python自带模块不需要单独安装,但要注意,在Python3中的导入方式与Python2的有点小区别
# python2
import ConfigParser
# python3
import configparser
3.1 初始化对象并读取文件
import configparser
import os
# 创建对象
config = configparser.ConfigParser()
dirPath = os.path.dirname(os.path.realpath(__file__))
inipath = os.path.join(dirPath,'test.ini')
# 读取配置文件,如果配置文件不存在则创建
config.read(inipath,encoding='utf-8')
3.2 获取并打印所有节点名称
secs = config.sections()
print(secs)
输出结果:
['section1', 'section2']
3.3 获取指定节点的所有key
option = config.options('section1')
print(option)
输出结果:
['name', 'age', 'heigth']
3.4 获取指定节点的键值对
item_list = config.items('section2')
print(item_list)
输出结果:
[('name', 'python'), ('age', '19')]
3.5 获取指定节点的指定key的value
val = config.get('section1','age')
print('section1的age值为:',val)
输出结果:
section1的age值为: 18
3.6 将获取到值转换为int\bool\浮点型
Attributes = config.getint('section2','age')
print(type(config.get('section2','age')))
print(type(Attributes))
# Attributes2 = config.getboolean('section2','age')
# Attributes3 = config.getfloat('section2','age')
输出结果:
<class 'str'>
<class 'int'>
3.7 检查section或option是否存在,返回bool值
has_sec = config.has_section('section1')
print(has_sec)
has_opt = config.has_option('section1','name')
print(has_opt)
输出结果:
TrueTrue
3.8 添加一个section和option
if not config.has_section('node1'):
config.add_section('node1')
# 不需判断key存不存在,如果key不存在则新增,若已存在,则修改value
config.set('section1','weight','100')
# 将添加的节点node1写入配置文件
config.write(open(inipath,'w'))
print(config.sections())
print(config.options('section1'))
输出结果:
['section1', 'section2', 'node1']
[('name', 'wang'), ('age', '18'), ('heigth', '180'), ('weight', '100')]
3.9 删除section和option
# 删除option
print('删除前的option:',config.items('node1'))
config.remove_option('node1','dd')
# 将删除节点node1后的内容写回配置文件
config.write(open(inipath,'w'))
print('删除后的option:',config.items('node1'))
输出结果:
删除前的option: [('dd', 'ab')]
删除后的option: []
# 删除section
print('删除前的section: ',config.sections())
config.remove_section('node1')
config.write(open(inipath,'w'))
print('删除后的section: ',config.sections())
输出结果:
删除前的section: ['section1', 'section2', 'node1']
删除后的section: ['section1', 'section2']
3.10 写入方式
1、write写入有两种方式,一种是删除源文件内容,重新写入:w
config.write(open(inipath,'w'))
另一种是在原文基础上继续写入内容,追加模式写入:a
config.write(open(inipath,'a'))
需要注意的是,config.read(inipath,encoding='utf-8')
只是将文件内容读取到内存中,即使经过一系列的增删改操作,只有执行了以上的写入代码后,操作过的内容才会被写回文件,才能生效。
来源:https://blog.csdn.net/weixin_38813807/article/details/128669736


猜你喜欢
- 一 字典的嵌套在机器学习实战决策树部分,生成决策树时用到了字典的嵌套。>>>s1={'no surface'
- 需求每天请求一封邮件,并读取该邮件这个其实可以使用linux 自带了crontab实现,但是毕竟是django 开发。想着不知道有没有方法可
- 项目地址:https://github.com/cgDeepLearn/BilibiliCrawler 项目特点采取了一定的反反爬
- python乱序字符串排序什么是乱序字符串排序乱序字符串排序是指一个字符串是另一个字符串的乱序排序,比如apple就是eppal的乱序字符串
- 问:把数据从MySQL迁移到Oracle需要注意些什么?答:以下是MySQL迁到Oracle需要掌握的注意事项,希望对你有所帮助。1.自动增
- 用的pytorch来训练deeplabv3+在做deeplabv3+的过程中,我的训练图片是8位的,如下图:8位的:24位的:这样虽然在训练
- 今天对add_months函数进行简单总结一下:add_months 函数主要是对日期函数进行操作,在数据查询的过程中进行日期的按月增加,其
- 前言本文主要给大家介绍了关于python中reload(module)用法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细
- 观察者模式首先,提到观察者模式,这不禁让我想到了MVVM,MVVM架构模式感觉用到了观察者的思想。我们还是按照惯例,了解一下什么是观察者模式
- 1.字符强转一切如果是字符串进行强制转换, 仅仅就是在原数据类型的两边套上引号2.list : 强制转换成列表""&qu
- 介绍职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将
- 前言读取站点资料数据对站点数据进行插值,插值到规则网格上绘制EOF第一模态和第二模态的空间分布图绘制PC序列关于插值,这里主要提供了两个插值
- 一、建造者模式建造者模式,顾名思义类似于建筑工人,他们按照有条理的施工顺序(e.g. 打桩 => 浇筑框架 => 砌墙 =>
- 背景在微信分享开发的时候我们通常的流程是 <?php require_once "jssdk.php"; $jss
- 比如一个详细的简历信息页面分 1、个人资料 2、工作经验 3、项目经验 4、其他信息 4个表单。 一般的需求是允许用户单独提交其中任何一个表
- 在ASP中加密方法有对应的解密方法好象不多,现在根据前辈资料整理出在asp中加密与解密函数,根据RSA 算法实现的。什么是RSA?
- 事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScript中最重要的主题之一,深入理解事件的工作机制以及它们对性能的
- 不知道有多少人清楚的知道,在Oracle中,如果一个复合索引,假定索引(a,b,c)三个字段,删除了(包括unused)其中一个字段,Ora
- iamlaosong文曾经看到这样一个问题,一个字典中的元素是列表,将这个列表元素赋值给一个变量,然后修改这个列表中元素的值,结果发现,字典
- select 终极美化,主要是针对下拉框的美化一个很古老的话题了,不过貌似目前为止也没有比较好的做到,在jxdawei的基础上做了