configparser模块的特点和用法

一、概述

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

二、格式

  常见配置文件格式如下:

  1. [DEFAULT]
  2. serveraliveinterval = 45
  3. compression = yes
  4. compressionlevel = 9
  5. forwardx11 = yes
  6.  
  7. [bitbucket.org]
  8. user = hg
  9.  
  10. [topsecret.server.com]
  11. host port = 50022
  12. forwardx11 = no

三、主要用法

1、创建配置文件

  1. import configparser #导入configparser模块
  2.  
  3. #生成一个对象
  4. config = configparser.ConfigParser()
  5. #配置默认全局配置组
  6. config["DEFALUT"] = {"ServerAliveInterval":"",
  7. "Compression":"yes",
  8. "CompressionLevel":""
  9. }
  10. #配置第一个其他组
  11. config["bitbucket.org"] = {}
  12. #直接赋值
  13. config["bitbucket.org"]["User"] = 'hg'
  14.  
  15. #配置第二个其他组
  16. config["topsecret.server.com"] = {}
  17. #这边就赋给一个变量
  18. topsecret = config["topsecret.server.com"]
  19. #通过变量赋值
  20. topsecret["Host Port"] = ''
  21. topsecret["ForwardX11"] = 'no'
  22. #给全局配置组赋值
  23. config["DEFALUT"]["ForwardX11"] = "yes"
  24. #操作完毕,把配置的内容写入一个配置文件中
  25. with open("example.ini","w") as configfile:
  26. config.write(configfile)

2、读取配置文件

1)、读取配置组

  1. >>> import configparser
  2. >>> config = configparser.ConfigParser()
  3. >>> config.sections() #不读取配置文件,组名列表为空
  4. []
  5. >>> config.read("example.ini") #读取配置文件,返回配置文件名
  6. ['example.ini']
  7. >>> config.sections() #返回除默认配置组的其他组名
  8. ['bitbucket.org', 'topsecret.server.com']
  9. >>> config.defaults() #读取默认配置组,并返回有序字典
  10. OrderedDict([('compressionlevel', ''), ('serveraliveinterval', ''), ('compression', 'yes'), ('forwardx11', 'yes')])

2)、组名是否存在

  1. >>> 'bitbucket.org' in config #组名存在
  2. True
  3. >>> 'zhangqigao.org' in config #组名不存在
  4. False

3)、读取组内的值

  1. >>> config["bitbucket.org"]["User"] #读取"bitbucket.org"配置组中的值
  2. 'hg'
  3. >>> config["DEFAULT"]["Compression"] #读取默认配置组中的值
  4. 'yes'
  5. >>> topsecret = config['topsecret.server.com'] #把配置组赋给一个对象
  6. >>> topsecret['ForwardX11'] #通过对象获取值

4)、 循环获取组内的key值

  1. >>> for key in config["bitbucket.org"]: #循环打印bitbucket.org组下的key值
  2. ... print(key)
  3. ...
  4. #输出,只打印默认组和bitbucket.org组的key值
  5. user
  6. compressionlevel
  7. serveraliveinterval
  8. compression
  9. forwardx11
  10. >>> for key in config["topsecret.server.com"]:#循环打印topsecret.server.com组下的key
  11. ... print(key)
  12. ...
  13. #输出,只打印默认组和topsecret.server.com组的key值
  14. host port
  15. forwardx11
  16. compressionlevel
  17. serveraliveinterval
  18. 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模块的特点和用法的更多相关文章

  1. 小白的Python之路 day5 logging模块

    logging模块的特点及用法 一.概述 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你 ...

  2. 小白的Python之路 day5 random模块和string模块详解

    random模块详解 一.概述 首先我们看到这个单词是随机的意思,他在python中的主要用于一些随机数,或者需要写一些随机数的代码,下面我们就来整理他的一些用法 二.常用方法 1. random.r ...

  3. 小白的Python之路 day5 shelve模块讲解

    shelve模块讲解 一.概述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出 ...

  4. 小白的Python之路 day5 hashlib模块

    hashlib模块 一.概述 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 二.算法的演 ...

  5. 小白的Python之路 day5 shutil模块

    shutil模块 一.主要用途 高级的文件.文件夹.压缩包 等处理模块 二.常用方法详解 1.shutil.copyfileobj(fsrc, fdst) 功能:把一个文件的内容拷贝到另外一个文件中, ...

  6. 小白的Python之路 day5 模块XML特点和用法

    模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...

  7. Python 之路 Day5 - 常用模块学习

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  8. python 之路 day5 - 常用模块

    模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser has ...

  9. Python之路,Day5 - 常用模块学习 (转载Alex)

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

随机推荐

  1. python爬虫爬取大众点评并导入redis

    直接上代码,导入redis的中文编码没有解决,日后解决了会第一时间上代码!新手上路,多多包涵! # -*- coding: utf-8 -*- import re import requests fr ...

  2. Linux 文本编辑器vi命令

    1.Vim Vim  是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX 上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件. Vim 没有菜单,只有命令 2.Vim 工作模式 3.插入 ...

  3. php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

    转载自:http://blog.csdn.net/nuli888/article/details/51892776 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图 ...

  4. Xamarin调用JSON.net来解析JSON

      https://www.cnblogs.com/zjoch/p/4458516.html   再来我们要怎么解析JSON格示呢?在.net 中,我们很孰悉的JSON.net,没错,我们依然可以在X ...

  5. day 10 字符编码和文件处理 细节整理

    pycharm是文本编辑器. 大概理解为:  输出到屏幕上的时候,是解码过的字符串,用 decode 处理的时候要编码成相应的流, encode 成你要用的格式就可以了 1 .字符编码: 字符==== ...

  6. 微信小程序之HTTPS请求

    1.wx.request wx.request发起的是 HTTPS 请求,以下是它的基本用法,这里不再啰嗦 https://mp.weixin.qq.com/debug/wxadoc/dev/api/ ...

  7. SQL列中含有换行符的查找和替换方法

    最近在获取数据时,发现程序读取的字段中含有\r\n字符,检查数据库表中的数据,发现是varchar字符串中包含了换行符.导入数据导致了这一情况出现. 回车换行 不同系统的行结尾符号并不同,如下: li ...

  8. JavaScrip:Function函数编程

    自定义函数定义 1.函数通过function关键字创建,函数创建格式: function 函数名称([参数,...]){ 代码段; return 返回值; } 注意事项: 函数名称不要包含特殊字符 函 ...

  9. lodash源码分析之List缓存

    昨日我沿着河岸/漫步到/芦苇弯腰喝水的地方 顺便请烟囱/在天空为我写一封长长的信 潦是潦草了些/而我的心意/则明亮亦如你窗前的烛光/稍有暧昧之处/势所难免/因为风的缘故 --洛夫<因为风的缘故& ...

  10. vim保存时提示: 无法打开并写入文件

    命名内容已经写入,但是不知怎的就是没法保存,估计是权限不足的问题. 切换到root用户,进行了同样的操作,发现没有该问题了. 经验教训:编辑配置文件时,记得切换到root用户进行编辑.