文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python模块之configparse

2023-01-31 06:45

关注

configparser

configParser 模块用于操作配置文件

注:Parser汉译为“解析”之意。

配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值或者键:值)。

为了更好的理解本文,我们先了解一下配置文件的组成及命名:配置文件(INI文件)由节(section)、键、值组成。

样例配置文件config.ini

[book]
title = ConfigParser模块教程
time = 2018-01-12 11:47:37

[size]
size = 1024

[other]
blog = https://blog.51cto.com/kexiaoke

在config.ini里面出现了三个节(section),分别是book,size,other
book里面有两个键值对,size和other里面各一个。

读取配置文件

  • read(filename) 直接读取ini文件内容
  • sections() 得到所有的section,并以列表的形式返回
  • options(section) 得到该section的所有option
  • items(section) 得到该section的所有键值对
  • get(section,option) 得到section中option的值,返回为string类型
  • getint(section,option) 得到section中option的值,返回为int类型

增加或修改配置

  • add_section(section) 添加一个新的section
  • set( section, option, value) 对section中的option进行设置
    需要调用write将内容写入配置文件。

    获取config.ini配置示例

    read_config.py

#!/usr/bin/env python

__author__ = 'xiaoke'
__time__ = '2018-01-12 11:17'
PROJECT_NAME = 'test_projtcts'

#导入configparser模块
import configparser

#生成conf对象
conf= configparser.ConfigParser()

#加载config.ini文件内容
conf.read('config.ini')

#读取配置文件里所有的Section
print('读取配置文件里所有的Section')
print(conf.sections())

#打印出book这个section下包含key
print('打印出book这个section下包含key')
print(conf.options('book'))

#打印test1这个section下所有的key及对应的values
print('打印book这个section下所有的key及对应的values')
print(conf.items("book"))

#指定section,option读取值
print('获取book这section个title内容')
print(conf.get('book','title'))

执行结果如下

读取配置文件里所有的Section
['book', 'size', 'other']
打印出book这个section下包含key
['title', 'time']
打印book这个section下所有的key及对应的values
[('title', 'ConfigParser模块教程'), ('time', '2018-01-12 11:47:37')]
获取book这section个title内容
ConfigParser模块教程

在config.ini文件增加一个section

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'xiaoke'
__time__ = '2018-01-12 13:54'
PROJECT_NAME = 'test_projtcts'

#导入configparser模块
import configparser

#生成conf对象
conf= configparser.ConfigParser()

#加载config.ini文件内容
conf.read('config.ini')

#增加一个section
conf.add_section('add_test')
conf.set('add_test','name','xiaoke')
conf.set('add_test','age','25')

#添加完毕,必须调用write方法写入
conf.write(open('config.ini','w'))

#打印刚添加的内容
print(conf.items('add_test'))

执行完成后会在配置文件如下的内容

conf.set('section','key','value')

[add_test]
name = xiaoke
age = 25

修改section的内容

#导入configparser模块
import configparser

#生成conf对象
conf= configparser.ConfigParser()

#加载config.ini文件内容
conf.read('config.ini')

#打印修改之前的值
print(conf.items('add_test'))

#修改add_test section的age键
conf.set('add_test','age','27')

#修改完毕,必须调用write方法写入
conf.write(open('config.ini','w'))

#打印修改之后的值
print(conf.items('add_test'))

------------------------结果如下-----------------

修改之前的值
[('name', 'xiaoke'), ('age', '28')]
修改之后的值
[('name', 'xiaoke'), ('age', '27')]

删除section或者option

删除section

config.remove_section("add_test")
conf.write(open('config.ini','w'))

删除option

conf.remove_option('add_test','age')
conf.write(open('config.ini','w'))

注意要点

注意要点:
1.ConfigParser 在get 时会自动过滤掉‘#’或‘;’注释的行(内容);
一般情况下我们手工会把配置中的暂时不需要的用‘#’注释,问题在于,Configparser 在wirte的时候同file object行为一致,如果将注释’#’的配置经过get后,再wirte到conf,那么’#’的配置就会丢失。
那么就需要一个策略或规则,配置需不需要手工编辑 ?还是建立复杂的对原生文本的处理的东西,我建议是管住手,避免将一些重要的配置爆露给用户编辑,切记行内注释和Section内注释。
有一个相对简单的方法是: 对单独在一行的代码,你可以在读入前把”#”, “;”换成其他字符如’@’,或‘^’(在其bat等其他语言中用的注释符易于理解),使用allow_no_value选项,这样注释会被当成配置保存下来,处理后你再把“#”, “;”换回来。
2.在ConfigParser write之后,配置文本如果有大写字母’PRODUCT’会变为小写字母’product’,并不影响配置的正确读写。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯