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

标签:Python,ConfigParser,模块
0
投稿

猜你喜欢

  • Python 读取某个目录下所有的文件实例

    2022-08-27 20:04:13
  • Python中线程threading.Thread的使用详解

    2023-07-22 13:25:48
  • Go语言实现配置热加载的方法分享

    2024-02-07 04:02:47
  • ORACLE中的的HINT详解

    2024-01-26 23:29:53
  • django 连接数据库出现1045错误的解决方式

    2024-01-17 19:37:47
  • SQL 外链接操作小结 inner join left join right join

    2024-01-19 21:06:39
  • 线上MySQL的自增id用尽怎么办

    2024-01-22 01:39:38
  • Python模块pexpect安装及使用流程

    2023-04-19 05:41:29
  • js实现限定范围拖拽的示例

    2024-04-29 13:38:55
  • 图片预加载效果的实现

    2008-06-16 12:08:00
  • 一步步教你用python连接oracle数据库

    2024-01-12 22:54:20
  • sql server常用命令行操作(启动、停止、暂停)

    2012-01-05 19:02:48
  • 浅谈PHP中的Trait使用方法

    2023-11-08 09:25:33
  • [新手必看]15个asp编程常见问题解答

    2007-08-22 13:07:00
  • 解决图片撑大问题

    2009-09-22 14:51:00
  • 详解golang中bufio包的实现原理

    2024-04-28 09:13:34
  • 几种MySQL中的联接查询操作方法总结

    2024-01-25 05:15:15
  • 基于PHP实现邮件实时通知功能

    2024-06-07 15:46:09
  • Python中的sort()方法使用基础教程

    2022-03-07 21:44:09
  • python3利用ctypes传入一个字符串类型的列表方法

    2021-06-10 20:33:36
  • asp之家 网络编程 m.aspxhome.com