configparser模块用于生成与windows.ini文件类似格式的配置文件,可以包含一节或多节(section),每个节可以有一个或多个参数(键=值)

在学习这个模块之前,先来看一个经常见到的配置文档:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = admin [topsecret.server.com]
port = 1000345
forwardx11 = no

1.创建配置文件

现在来用python中的configparser模块生成一个与上面相同的配置文档

#先导入configparser模块
import configparser #为其中一个方法定义一个变量
cfp=configparser.ConfigParser() #定义"DEFAULT"节及其子参数
cfp["DEFAULT"]={"ServerAliveInterval":45,
"Compression":"yes",
"CompressionLevel":9,
"ForwardX11":"yes"
}
#定义“bitbucket.org”节
cfp["bitbucke.ort"]={"USER":"admin"} #定义"topsecret.server.com"节及其参数
cfp["topsecret.server.com"]={"Port":1000345,"ForwardX11":"no"} #把上面定义的节及其参数写入"cfp.ini"这个文件
with open("cfp.ini","w") as f:
cfp.write(f)

运行程序后,生成的配置文件如下:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = admin [topsecret.server.com]
port = 1000345
forwardx11 = no

可以看到,跟文章开始处的配置文件格式一模一样的。

2.读取配置文件中的变量

目标配置文件就已经生成了,那现在想读取一个配置文件里的某个选项,该怎么做呢?

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
#打印目标配置文件的节
print(cfp.sections())

理论上,读取配置文件的节,所得是一个列表,运行脚本,得到的字段为:

['bitbucket.org', 'topsecret.server.com']

这是因为第一节是“DEFAULT”字段,这个字段是默认对整个配置文件生效的,

所以"DEFAULT"默认是不会显示出来。

如果把配置文件中的“DEFAULT”改成“DEFAULTS”,如下:

[DEFAULTS]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = admin [topsecret.server.com]
port = 1000345
forwardx11 = no

然后再用上面的代码来读取整个配置文件的节,结果如下:

['DEFAULTS', 'bitbucket.org', 'topsecret.server.com']

打印“bitbucket.ort”节下所有的键和值

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.items("bitbucket.org"))

从返回结果可以看到,把"DEFAULT"这个节下面的键和值也一起返回了,正如前面所说的,“DEFAULT”是默认全局生效的

[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'admin')]

打印“bitbucket.ort”节下所有的键

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.options("bitbucket.org"))

结果同上面一样,"DEFAULT"下面的键也被一起返回了

['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']

3.测试配置文件中的键和值

1.测试某个选项是否在配置文件中,可以使用如下方法:

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print("topsecret.server.com" in cfp)

得到的结果为:

True

2.测试某个节下面是否有某个键

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.get("bitbucket.org","compression"))

返回如下:

yes

4.修改配置文件

1.向配置文件里添加一个键值对

代码如下:

import configparser

cfp=configparser.ConfigParser()
#打开目标配置文件
cfp.read("cfp.ini")
#添加节
cfp.add_section("conf")
#为添加的节设置键和值
cfp["conf"]["group"]="group01" #把修改写入配置文件
cfp.write(open("cfp.ini","w"))

添加后的文件如下:

[DEFAULTS]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = admin [topsecret.server.com]
port = 1000345
forwardx11 = no [conf]
group = group01

可以看到已经增加一个“conf”的节,“conf”节下面增加一个值为“group01”的键“group”

2.删除配置文件的节及其对就的键和值

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini") #从“topsecret.server.com”节中删除
cfp.remove_option("topsecret.server.com","forwardx11")
cfp.write(open("cfp.ini","w"))

返回结果如下:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = admin [topsecret.server.com]
port = 1000345

可以看到"forwardx11"这个键值对已经从"topsecret.server.com"这个节中删除掉了。

3.为某个键设置值:

代码如下:

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini") #为"topsecret.server.com"节添加一个"k1"键,其值为“v1”
cfp.set("topsecret.server.com","k1","v1")
#为“conf”节添加一个"k100"键,其值为"v100"
cfp.set("conf","k100","v100") cfp.write(open("cfp.ini","w"))
print(cfp.sections())

返回结果为:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucker.ort]
user = admin [topsecret.server.com]
port = 1000345
forwardx11 = no
k1 = v1 [conf]
group = group01
k100 = v100

configparser模块的常见用法的更多相关文章

  1. python中os模块和sys模块的常见用法

    OS模块的常见用法 os.remove()   删除文件 os.rename()   重命名文件 os.walk()    生成目录树下的所有文件名 os.chdir()    改变目录 os.mkd ...

  2. 19.python中os模块的常见用法

    常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt', 而对于Linux/Unix用户,它是'posix'. os. ...

  3. 小白的Python之路 day5 configparser模块的特点和用法

    configparser模块的特点和用法 一.概述 主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser.在python2.x版本中为Conf ...

  4. python之模块pprint之常见用法

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块pprint之常见用法 import pprint data = [(1,{'a':'A' ...

  5. python之模块poplib之常见用法

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块poplib之常见用法 ''' 所以,收取邮件分两步: 第一步:用poplib把邮件的原始 ...

  6. 【python库模块】Python subprocess模块功能与常见用法实例详解

    前言 这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能.常用函数相关使用技巧. 参考 1. Python subprocess ...

  7. ES模块的基本用法常见使用问题

    本文作者:高峰,360奇舞团前端工程师,W3C WoT工作组成员. ES6中引入了模块(Modules)的概念,相信大家都已经挺熟悉的了,在日常的工作中应该也都有使用. 本文会简单介绍一下ES模块的优 ...

  8. 模块二 hashlib模块、configparser模块、logging模块

    算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常 ...

  9. (转)python的ConfigParser模块

    原文:https://blog.csdn.net/miner_k/article/details/77857292 如何使用Python3读写INI配置文件-------https://blog.cs ...

随机推荐

  1. 网络端口地址转换的NAPT配置

    背景:只有一个IP地址,实现内网内多台主机访问外网 原理:NAPT使用不同的端口来映射对各内网的IP地址到一个指定的外网IP地址,多对一. NAPT采用端口多路复用的方式.内部网络的所有主机均可共享一 ...

  2. webpack编译流程漫谈

    前言 weback在web构建工具的激烈竞争中逐渐脱引而出. 无论是编译速度.报错提示.可扩展性等都给前端开发者耳目一新的感觉.本篇文章是个人对webpack的一点小研究总结. webpack在开发者 ...

  3. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)

    以后似乎终于不用去学后缀数组的倍增搞法||DC3等blablaSXBK的方法了= = 定义(来自关于后缀数组的那篇国家集训队论文..) 后缀数组:后缀数组SA是一个一维数组,它保存1..n的某个排列S ...

  4. 并查集-HDU1232-畅通工程

    转的其他人的.不知道谁的. 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意 ...

  5. 总结过滤器,监听器,servlet的异同点,已经执行顺序。

    1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml ...

  6. js根据出生年月日换算年龄

    function age_Conversion(date) { debugger var age = ''; var str = date.replace(/年|月/g, "-") ...

  7. Oracle_建表

    Oracle_建表 --设计要求: --建立一张用来存储学生信息的表 --字段包含学号.姓名.性别,年龄.入学日期.班级,email等信息   create table student(        ...

  8. 启动tomcat时,一直卡在Deploying web application directory这块的解决方案

    本来今天正常往服务器上扔一个tomcat 部署一个项目的, 最后再启动tomcat 的时候 发现项目一直都访问不了,看了一下日志: [root@iz8vbdzx7y7owm488t4d89z bin] ...

  9. 谁能教我iCloud怎么用?

    iCloud是苹果公司所提供的云端服务,使用者可以免费储存5GB的资料.你已经开始使用IOS5,并且你很兴奋的着手于将它同步至云服务层.以下就是怎样让你的设备更新至云服务层的非常简单的步骤.在你的iO ...

  10. Insert Sort Singly List

    对单链表插入排序,给出个单链表的head节点:返回排完序的head节点: 首先数据结构中习惯了以数组为参数排序,瞬间想到是遍历单链表存入arraylist中,再进行insert sort,(O(n** ...