主要介绍python3中的ConfigParser模块的使用,该模块主要被用来读写配置文件。

安装模块:pip3 install configparser

root@ranxf:/usr/lib/python3/dist-packages# pip3 install configparser
Collecting configparserDownloading configparser-3.5.0.tar.gz
Building wheels for collected packages: configparserRunning setup.py bdist_wheel for configparser ... doneStored in directory: /root/.cache/pip/wheels/1c/bd/b4/277af3f6c40645661b4cd1c21df26aca0f2e1e9714a1d4cda8
Successfully built configparser
Installing collected packages: configparser
Successfully installed configparser-3.5.0

基本的读取配置文件

    -read(filename)                  直接读取文件内容-sections()                      得到所有的section,并以列表的形式返回-options(section)                得到该section的所有option-items(section)                  得到该section的所有键值对-get(section,option)             得到section中option的值,返回为string类型-getint(section,option)          得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

基本的写入配置文件

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

在对配置文件进行读写操作前,我们需要先进行以下两个操作:

1、实例化ConfigParser对象:

#  实例化configParser对象
cf = configparser.ConfigParser()

2、读取配置文件

#  读取config.ini文件
cf.read(config.ini)

然后进行配置文件的读取操作。

以get为例,示例代码如下:#  定义方法,获取config分组下指定name的值
def getConfigValue(self, name):value = self.cf.get("config", name)return value
#  定义方法,获取cmd分组下指定name的值
def getCmdValue(self, name):value = self.cf.get("cmd", name)return value

通过get(section, option)方法,可以获取指定分组下指定名称的值,其他方法类似,可参照着尝试。

基本的写入操作:

  • -write(fp)  将config对象写入至某个 .init 格式的文件  Write an .ini-format representation of the configuration state.
  • -add_section(section)   添加一个新的section
  • -set( section, option, value   对section中的option进行设置,需要调用write将内容写入配置文件
  • -remove_section(section)  删除某个 section
  • -remove_option(section, option) 

以set(section, option, value)为例,示例代码如下:

#  定义方法,修改config分组下指定name的值value
def setConfigValue(self, name, value):cfg = self.cf.set("config", name, value)fp = open(r'config.ini', 'w')cfg.write(fp)

其他方法可以自行尝试。

配置文件中的名字是不区分大小写的,如下两个是等价的:

#  不区分大小写,以下两个等价,都获取appActivity的值
self.cf.get("config", "appActivity")
self.cf.get("config", "APPACTIVITY")

在解析时,getboolean()方法查找任何可行的值,例如以下几个都是等价的:

#  以下取得的值都是等价的为ture
[log]
log_error=true
log_error=TRUE
log_error=1
log_error=yes

实例代码1:

config.conf

[section1]
name = test
func = mainhost[section2]
ip = 192.168.2.170

demo.py

import configparserconf = configparser.ConfigParser()
conf.read("./config.conf")# 获取指定的section, 指定的option的值
name = conf.get("section1", "name")
print(name)
func = conf.get("section1", "func")
print(func)# 获取所有的section
sections = conf.sections()
print(sections)# 写配置文件
# 更新指定section, option的值
conf.set("section2", "port", "8080")# 写入指定section, 增加新option的值
conf.set("section2", "IEPort", "80")# 添加新的 section
conf.add_section("new_section")
conf.set("new_section", "new_option", "https://github.com/Ranxf/")# 写回配置文件
conf.write(open("./config.conf", "w"))

实例代码2:

config.conf

[section1]
name = test
func = mainhost[section2]
ip = 10.1.1.61
port = 8080

demo2.py(读取配置文件)

'''
Date:2017.12.26
Author:Ranxf
'''import configparserconf = configparser.ConfigParser()
conf.read("./config.conf")# 获取指定的section, 指定的option的值
name = conf.get("section1", "name")
print(name)
func = conf.get("section1", "func")
print(func)# 获取所有的section
sections = conf.sections()
print(sections)

demo3.py(写入配置文件):

'''
Date:2017.12.26
Author:Ranxf
'''import configparserconf = configparser.ConfigParser()
conf.read('config.conf')conf.set("section1", "name", "ranxf")  # 修改指定section 的option
conf.set("section1", "age", "21")  # 增加指定section 的option
conf.add_section("section3")  # 增加section
conf.set("section3", "site", "hehe.net")  # 给新增的section 写入option
conf.write(open('config.conf', 'w'))

写入后的配置文件

[section1]

name = interfacetestfunc = mainhostage = 21

[section2]ip = 10.1.1.61port = 8080

[section3]site = hehe.net

参考:

https://docs.python.org/3/library/configparser.html

转载于:https://www.cnblogs.com/ranxf/p/7804608.html

python3_configparser模块详解相关推荐

  1. 【ES6】Module模块详解

    [ES6]Module模块详解 一.Module的由来 二.严格模式 三.export命令 四.import命令 查看更多ES6教学文章: 参考文献 引言:由于两个JS文件之间相互使用必须通过一个ht ...

  2. python常用内置模块-Python常用内置模块之xml模块(详解)

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  3. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  4. Ansible基本使用及常用模块详解

    一.ansible基本使用 定义主机组 定义被管理节点列表的文件/etc/ansible/hosts,在定义被管理节点的时候,可以单独基于主机做定义,也可以将多个主机定义成一个主机组. 在上篇博文安装 ...

  5. Nginx源码研究之nginx限流模块详解

    这篇文章主要介绍了Nginx源码研究之nginx限流模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 高并发系统有三把利器:缓存.降级和限流: 限流的目的是通过对并 ...

  6. python中json模块博客园_Python中的Json模块详解

    Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...

  7. python的sys模块有什么用_python sys模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  8. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明    一.简 ...

  9. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

最新文章

  1. 事件源event.target
  2. 给帝国cms7.5后台文章编辑器ckeditor增加一个行距的功能插件
  3. Socket中listen
  4. 记录一次生产发布事件——(简单的非空验证也能引发大问题)
  5. input的onchange事件 及只能输入数字实现
  6. C++ Primer Plus第二章课后编程答案
  7. pandas dataframe随机采样
  8. 为什么现在的监控系统容易硬盘坏?附原理解析
  9. json文件存储 qt_QT开发(五十一)——QtQuick基础
  10. SQL Server 2005完全安装教程----带安装文件下载地址
  11. C语言十折交叉验证,十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集...
  12. [Spark版本更新]--Spark-2.4.0 发布说明
  13. 自动发射子弹c语言,C语言实现简单飞机大战
  14. php 自己画地图,绘制自己的独家地图
  15. Kubernetes安装报错nodeRegistration.name: Invalid value: “vm_0_14_centos“: a DNS-1123 subdomain
  16. Java String类源码阅读笔记
  17. 假如古代皇帝也懂负载均衡算法
  18. 运行BOA报错 Could not open mime.types file, /etc/mime.types, for reading
  19. 守护网络安全 呵护精神家园 --常见网络风险(二)
  20. 广东虚拟服务器,广东虚拟主机云服务器

热门文章

  1. 解决岛屿类问题(网格)通用解法DFS(附题)
  2. python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人
  3. python获取按键值_如何用按键获取刻度值?
  4. 制作好的app需要服务器吗,在直播app制作过程中,服务器是如何配置的?
  5. 【2021团体程序设计天梯赛】L2部分(PTA,L2-037到L2-040)题解代码复盘
  6. 【CCCC】L3-014 周游世界 (30分),,DFS搜索最短路,路径打印
  7. linux恢复deleted状态的文件,Linux恢复被删除的文件 How To Recover Deleted Files From Your Linux System ....
  8. epplus word html,EPPlus简介
  9. jquery的DOM节点操作(复制元素节点)
  10. Glad You Came--带条件的线段树区间更新,区间查询(其实是单点查询)