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
猜你喜欢
- 作为设计主管,Peter Stern 已经领导 microsoft.com 重新设计了主页并且开发了五个不同的交互工具,这些工具被用于下载中
- 本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作。分享给大家供大家参考,具体如下:爬一个电脑客户端的订单。罗总推荐,
- 本文实例讲述了Python实现二叉树及遍历方法。分享给大家供大家参考,具体如下:介绍:树是数据结构中非常重要的一种,主要的用途是用来提高查找
- 第一类人,用户体验无所不能。第二类人,用户体验无所不包括。第三类人,用户体验只是指导思想。用户研究通常是做创新的工作,也就注定只少数有财力、
- 当然还是要使用FileSystemObject(FSO)来创建了。不过在创建前,要先检查以下目录是否存在,如果存在,就不用创建了: 
- Q:Dreamweaver(简称DW)中如何输入空格?A:按下“Ctrl+Shift+空格键”或者在中
- 在我们写样式的时候,页面的CSS在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式更名了而原来的忘了删除,总之页面中可能存在
- 本文使用的代码book_dict = {"price": 500, "bookName": &quo
- 转换工具层出不穷,ffmpeg才是全能的转换工具,只是不支持图形操作。没有关系,命令行方式,在freebsd/linux下直接来我们的思路是
- 如何让页面超时并指定一个超时时间?下面就是利用缓冲的程序页面事例: <%@ OutputCache Du
- 有时候,我们需要将TensorFlow的模型导出为单个文件(同时包含模型架构定义与权重),方便在其他地方使用(如在c++中部署网络)。利用t
- 本文实例讲述了javascript二维数组转置的方法。分享给大家供大家参考。具体实现方法如下:<script language=&qu
- 一、数字类型python除了支持原有的int和float类型,新增了支持Decimal或者Fraction。python还内置支持复数,后缀
- 关于php的引用(就是在变量或者函数、对象等前面加上&符号)的作用,我们先看下面这个程序。<?php
- 如下所示:'''以下代码均为讲解,不能实际操作''''''博客园 I
- 应原书编辑要求,先在文章顶部给出链接:《Everything You Know About CSS Is Wrong》http://www.
- python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy
- 【作者翻译】结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通
- 最近一个项目中遇到ASP对FoxPro库表(*.DBF)的操作问题。现实中确有许多应用软件使
- 1. 滤波器1.1 什么是滤波器滤波器是对图像做平滑处理 的一种常用工具。平滑处理即在尽可能地保留原图像信息的情况下,对像素值进行微调,使邻