Python 解析配置模块之ConfigParser详解-乾颐堂
1.基本的读取配置文件
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。
2.基本的写入配置文件
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。
3.基本例子
test.conf
1
2
3
4
5
6
7
8
9
|
[sec_a] a_key1 = 20 a_key2 = 10 [sec_b] b_key1 = 121 b_key2 = b_value2 b_key3 = $r b_key4 = 127.0.0.1 |
parse_test_conf.py
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
29
30
31
32
|
import ConfigParser cf = ConfigParser.ConfigParser() #read config cf.read( "test.conf" ) # return all section secs = cf.sections() print 'sections:' , secs opts = cf.options( "sec_a" ) print 'options:' , opts kvs = cf.items( "sec_a" ) print 'sec_a:' , kvs #read by type str_val = cf.get( "sec_a" , "a_key1" ) int_val = cf.getint( "sec_a" , "a_key2" ) print "value for sec_a's a_key1:" , str_val print "value for sec_a's a_key2:" , int_val #write config #update value cf. set ( "sec_b" , "b_key3" , "new-$r" ) #set a new value cf. set ( "sec_b" , "b_newkey" , "new-value" ) #create a new section cf.add_section( 'a_new_section' ) cf. set ( 'a_new_section' , 'new_key' , 'new_value' ) #write back to configure file cf.write( open ( "test.conf" , "w" )) |
得到终端输出:
1
2
3
4
5
|
sections: [ 'sec_b' , 'sec_a' ] options: [ 'a_key1' , 'a_key2' ] sec_a: [( 'a_key1' , "i'm value" ), ('a_key2 ', ' 22')] value for sec_a 's a_key1: i' m value value for sec_a's a_key2: 22 |
更新后的test.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[sec_b] b_newkey = new-value b_key4 = 127.0.0.1 b_key1 = 121 b_key2 = b_value2 b_key3 = new-$r [sec_a] a_key1 = i'm value a_key2 = 22 [a_new_section] new_key = new_value |
4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。
设定配置文件test2.conf
1
2
3
4
|
[portal] url = http: // %(host)s:%(port)s /Portal host = localhost port = 8080 |
使用RawConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
import ConfigParser cf = ConfigParser.RawConfigParser() print "use RawConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use RawConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出:
1
2
3
4
|
use RawConfigParser() read http: // %(host)s:%(port)s /Portal use RawConfigParser() write %(host)s:%(port)s |
改用ConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
import ConfigParser cf = ConfigParser.ConfigParser() print "use ConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use ConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出:
1
2
3
4
|
use ConfigParser() read http: //localhost :8080 /Portal use ConfigParser() write localhost:8080 |
改用SafeConfigParser:
1
2
3
4
5
6
7
8
9
10
11
|
import ConfigParser cf = ConfigParser.SafeConfigParser() print "use SafeConfigParser() read" cf.read( "test2.conf" ) print cf.get( "portal" , "url" ) print "use SateConfigParser() write" cf. set ( "portal" , "url2" , "%(host)s:%(port)s" ) print cf.get( "portal" , "url2" ) |
得到终端输出(效果同ConfigParser):
1
2
3
4
|
use SafeConfigParser() read http: //localhost :8080 /Portal use SateConfigParser() write localhost:8080 |
http://www.qytang.com/
http://www.qytang.com/cn/list/29/
http://www.qytang.com/cn/list/28/358.htm
http://www.qytang.com/cn/list/41/
http://www.qytang.com/cn/list/37/
http://www.qytang.com/cn/list/46/
http://www.qytang.com/cn/page/19.htm
http://www.qytang.com/cn/list/32/
http://www.qytang.com/cn/list/28/
http://www.qytang.com/cn/list/25/
http://www.qytang.com/cn/list/28/625.htm
http://www.qytang.com/cn/list/28/612.htm
http://www.qytang.com/cn/list/28/611.htm
Python 解析配置模块之ConfigParser详解-乾颐堂的更多相关文章
- python 多继承详解-乾颐堂
1 2 3 4 5 6 7 8 9 10 class A(object): # A must be new-style class def __init__(self): prin ...
- python时间处理详解-乾颐堂
1.获取当前时间的两种方法: import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") print now now ...
- HTTP 499状态码 nginx下499错误详解-乾颐堂
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...
- Linux ls命令详解-乾颐堂CCIE
ls命令用法举例: 例一:列出/home文件夹下的所有文件和目录的详细资料: 1 ls -l -R /home 命令参数之前要有一短横线“-”, 上面的命令也可以这样写: 1 ls -lR /ho ...
- xargs在linux中的使用详解-乾颐堂
xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤 ...
- linux sed命令详解-乾颐堂CCIE
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- nginx内置变量详解-乾颐堂
nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量.其中,部分预定义的变量的值是可以改变的. $arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
随机推荐
- golang的slice作为函数参数传值的坑
直接贴代码 func sliceModify(slice []int) { // slice[0] = 88 slice = append(slice, ) } func main() { slice ...
- Linux和Windows的遍历目录下所有文件的方法对比
首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...
- GOF23设计模式之访问者模式(visitor)
一.访问者模式概述 (1)模式动机 对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所 ...
- FC Switch sfpshow
sfpshow - fault-finding on Brocade Fibre Channel Switches So you've hit a situation where a Fibre Ch ...
- 杂项:WWW
ylbtech-杂项:WWW WWW是环球信息网的缩写,(亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wide Web”),中文名字为“万维网”,"环球网"等 ...
- ngui自适应
增加UIROOT using UnityEngine; namespace Com.Xyz.UI { [ExecuteInEditMode] [RequireComponent(typeof(UIRo ...
- sersync之不洗澡
inotiry图片参考 sersync图片参考 inotify文字教程 该软件对系统有要求,内核2.6以上,并且有如下目录,后面会讲解三个文件用途 [root@jokerpro ~]# uname - ...
- GroupVarint
folly/GroupVarint.h folly/GroupVarint.h is an implementation of variable-length encoding for 32- and ...
- Chrome Postman及Firefox Poster使用
Chrome浏览器跟Postman工具共用代理设置及Cookie Firefox浏览器跟Poster工具共用代理设置及Cookie xdebug调试原理 第一次请求url通过参数XDEBUG_SE ...
- Flask之视图(一)
2.关于Flask 知识点 从Hello World开始 给路由传递参数 返回状态码 重定向 正则URL 设置cookie和获取cookie 扩展 上下文 请求钩子 Flask装饰器路由的实现 Fla ...