小白的Python之路 day5 configparser模块的特点和用法
configparser模块的特点和用法
一、概述
主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser。在python2.x版本中为ConfigParser
二、格式
常见配置文件格式如下:
[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = hg [topsecret.server.com]
host port = 50022
forwardx11 = no
三、主要用法
1、创建配置文件
import configparser #导入configparser模块 #生成一个对象
config = configparser.ConfigParser()
#配置默认全局配置组
config["DEFALUT"] = {"ServerAliveInterval":"",
"Compression":"yes",
"CompressionLevel":""
}
#配置第一个其他组
config["bitbucket.org"] = {}
#直接赋值
config["bitbucket.org"]["User"] = 'hg' #配置第二个其他组
config["topsecret.server.com"] = {}
#这边就赋给一个变量
topsecret = config["topsecret.server.com"]
#通过变量赋值
topsecret["Host Port"] = ''
topsecret["ForwardX11"] = 'no'
#给全局配置组赋值
config["DEFALUT"]["ForwardX11"] = "yes"
#操作完毕,把配置的内容写入一个配置文件中
with open("example.ini","w") as configfile:
config.write(configfile)
2、读取配置文件
1)、读取配置组
>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.sections() #不读取配置文件,组名列表为空
[]
>>> config.read("example.ini") #读取配置文件,返回配置文件名
['example.ini']
>>> config.sections() #返回除默认配置组的其他组名
['bitbucket.org', 'topsecret.server.com']
>>> config.defaults() #读取默认配置组,并返回有序字典
OrderedDict([('compressionlevel', ''), ('serveraliveinterval', ''), ('compression', 'yes'), ('forwardx11', 'yes')])
2)、组名是否存在
>>> 'bitbucket.org' in config #组名存在
True
>>> 'zhangqigao.org' in config #组名不存在
False
3)、读取组内的值
>>> config["bitbucket.org"]["User"] #读取"bitbucket.org"配置组中的值
'hg'
>>> config["DEFAULT"]["Compression"] #读取默认配置组中的值
'yes'
>>> topsecret = config['topsecret.server.com'] #把配置组赋给一个对象
>>> topsecret['ForwardX11'] #通过对象获取值
4)、 循环获取组内的key值
>>> for key in config["bitbucket.org"]: #循环打印bitbucket.org组下的key值
... print(key)
...
#输出,只打印默认组和bitbucket.org组的key值
user
compressionlevel
serveraliveinterval
compression
forwardx11
>>> for key in config["topsecret.server.com"]:#循环打印topsecret.server.com组下的key值
... print(key)
...
#输出,只打印默认组和topsecret.server.com组的key值
host port
forwardx11
compressionlevel
serveraliveinterval
compression
重点:
四、configparser增删改查语法
1、配置文件名i.cfg
1
2
3
4
5
6
7
8
9
10
|
[DEFAULT] k1 = v1 k2 = v2 [section1] k3 = v3 k4:v4 [section2] k5 = 5 |
2、读i.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import configparser config = configparser.ConfigParser() config.read( "i.cfg" ) sec = config.sections() print (sec) #输出 [ 'section1' , 'section2' ] options = config.options( "section2" ) #返回默认组和section2组的key值 print (options) #输出 [ 'k5' , 'k1' , 'k2' ] item_list = config.items( "section2" ) #返回默认组和section2组的key-value值 print (item_list) #输出 [( 'k1' , 'v1' ), ( 'k2' , 'v2' ), ( 'k5' , '5' )] val1 = config.get( "section2" , "k1" ) #获取section2组中k1对应的值,是否可取是按照上面返回的列表 print (val1) #输出 v1 val2 = config.getint( "section2" , "k5" ) #返回section2中k5的值,这个值返回的int类型的 print (val2) #输出 5 |
3、改写i.cfg
①删除section和option
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import configparser config = configparser.ConfigParser() config.read( "i.cfg" ) config.remove_option( "section1" , "k3" ) #删除section1组下的k3 config.remove_section( "section2" ) #删除section2组 with open ( "i.cfg2" , "w" ) as f: #重新写入一个文件 config.write(f) #输出,写入文件的内容 [DEFAULT] k1 = v1 k2 = v2 [section1] k4 = v4 |
②添加section
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import configparser config = configparser.ConfigParser() config.read( "i.cfg" ) sec = config.has_option( "section2" , "k5" ) #是否存在section2组内有k5 print (sec) #输出 True sec = config.has_section( "duoduo" ) #是否存在duoduo组 print (sec) #输出 False config.add_section( "duoduo" ) #添加section组duoduo config.add_section( "duoduo" ) #重新写入到一个配置文件中 with open ( "i.cfg3" , "w" ) as f: config.write(f) |
③添加或者设置option
1
2
3
4
5
6
7
8
9
|
import configparser config = configparser.ConfigParser() config.read( "i.cfg" ) config. set ( "duoduo" , "z" , "18" ) #设置或者添加duoduo中option值 with open ( "i.cfg3" , "w" ) as f: #重新写入文件中 config.write(f) |
小白的Python之路 day5 configparser模块的特点和用法的更多相关文章
- 小白的Python之路 day5 logging模块
logging模块的特点及用法 一.概述 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你 ...
- 小白的Python之路 day5 random模块和string模块详解
random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...
- 小白的Python之路 day5 shelve模块讲解
shelve模块讲解 一.概述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出 ...
- 小白的Python之路 day5 hashlib模块
hashlib模块 一.概述 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 二.算法的演 ...
- 小白的Python之路 day5 shutil模块
shutil模块 一.主要用途 高级的文件.文件夹.压缩包 等处理模块 二.常用方法详解 1.shutil.copyfileobj(fsrc, fdst) 功能:把一个文件的内容拷贝到另外一个文件中, ...
- 小白的Python之路 day5 模块XML特点和用法
模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...
- Python 之路 Day5 - 常用模块学习
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- python 之路 day5 - 常用模块
模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser has ...
- Python之路,Day5 - 常用模块学习 (转载Alex)
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
随机推荐
- vue基础学习(二)
02-01 vue事件深入-传参.冒泡.默认事件 <div id="box"> <div @click="show2()"> < ...
- Webpack 2 视频教程 017 - Webpack 2 中分离打包项目代码与组件代码
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- Git详解之一:Git起步
起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...
- 01-java技术体系基础
java体系基础 理论 编程语言: 系统级: C, C++, go, erlang ... 应用级: C#, Java, Python, Perl, Ruby, php 虚拟机: jvm(java虚拟 ...
- Linux入门篇(一)——基本命令
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- table左边固定-底部横向滚动条
是日有需求,曾探讨过table表单头部.尾部固定不动,中间内容随着滚动条的滚动而变化. 整合资料之际,发现有很多表格,表单展现中,横向数据很多.很长,不方便查看. 则,横空霹雳出了,此款:table表 ...
- Redis学习笔记(一)关于在windows64位环境下的安装学习使用
前言 由于工作需要,目前我正在学习使用Redis.我当时学习Redis就从网上下载了点资料就开始学习了.入门看的是<REDIS入门指南>,这本书个人觉得很适合新手用来学习接触.根据书上的引 ...
- 更新Appium中的WebDriverAgent
到WebDriverAgent下载最新版本的WebDriverAgent 进入下载后的WebDriverAgent文件 执行 ./Scripts/bootstrap.sh 直接用Xcode打开WebD ...
- SQL Server-聚焦WHERE Column=@Param OR @Param IS NULL有问题?
前言 上一篇我们讲完SQL动态查询,本节我们继续来讲解SQL动态查询中存在的问题. SQL动态查询条件筛选过滤 当我们创建存储过程调用存储过程时,若筛选条件有值则过滤,没有值则返回所行记录,类似如下查 ...
- hibernate使用setResultTransformer()将SQL查询结果放入集合中
在平时开发中Hibernate提供的hql基本能够满足我们的日常需求.但是在有些特殊的情况下,还是需要使用原生的sql,并且希望sql查询出来的结果能够绑定到pojo上.hibernate API中的 ...