Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2890453
  • 博文数量: 348
  • 博客积分: 2907
  • 博客等级: 中校
  • 技术积分: 2272
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 09:16
个人简介

专注 K8S研究

文章分类

全部博文(348)

文章存档

2019年(22)

2018年(57)

2016年(2)

2015年(27)

2014年(33)

2013年(190)

2011年(3)

2010年(14)

分类: Python/Ruby

2013-06-29 23:02:46

ConfigParser模块】Python处理配置文件

 

转自:

 

1.基本的读取配置文件

-read(name) 直接读取ini文件内容
-sections()
得到所有的section,并以列表的形式返回
-options(section)
得到该section的所有option
-items(section)
得到该section的所有键值对
-get(section,option)
得到sectionoption的值,返回为sing类型
-getint(section,option)
得到sectionoption的值,返回为int类型,还有相应的getboolean()getfloat() 函数。
 
2.
基本的写入配置文件
-a_section(section)
添加一个新的section
-( section, option, value)
section中的option进行设置,需要调用将内容写入配置文件。
 
3.
基本例子
test.conf

1.      [sec_a] 

2.      a_key1 = 20 

3.      a_key2 = 10 

4.        

5.      [sec_b] 

6.      b_key1 = 121 

7.      b_key2 = b_value2 

8.      b_key3 = $r 

9.      b_key4 = 127.0.0.1 

parse_test_conf.py

1.      import ConfigParser 

2.        

3.      cf = ConfigParser.ConfigParser() 

4.        

5.      #read config

6.      cf.read("test.conf") 

7.        

8.      # return all section

9.      secs = cf.sections() 

10.   print 'sections:', secs 

11.     

12.   opts = cf.options("sec_a") 

13.   print 'options:', opts 

14.     

15.   kvs = cf.items("sec_a") 

16.   print 'sec_a:', kvs 

17.     

18.   #read by type

19.   str_val = cf.get("sec_a", "a_key1") 

20.   int_val = cf.getint("sec_a", "a_key2") 

21.     

22.   print "value for sec_a's a_key1:", str_val 

23.   print "value for sec_a's a_key2:", int_val 

24.     

25.   #write config

26.   #up value

27.   cf.set("sec_b", "b_key3", "new-$r") 

28.   #set a new value

29.   cf.set("sec_b", "b_newkey", "new-value") 

30.   #create a new section

31.   cf.add_section('a_new_section') 

32.   cf.set('a_new_section', 'new_key', 'new_value') 

33.     

34.   #write back to configure file

35.   cf.write(open("test.conf", "w")) 

 
得到终端输出:
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.      [sec_b] 

2.      b_newkey = new-value 

3.      b_key4 = 127.0.0.1 

4.      b_key1 = 121 

5.      b_key2 = b_value2 

6.      b_key3 = new-$r 

7.        

8.      [sec_a] 

9.      a_key1 = i'm value 

10.   a_key2 = 22 

11.     

12.   [a_new_section] 

13.   new_key = new_value 


4. RawConfigParser
ConfigParserSafeConfigParser

PythonConfigParser Mole中定义了3个类对INI文件进行操作。分别是RawConfigParserConfigParserSafeConfigParserRawCnfigParser是最基础的INI文件读取类,ConfigParserSafeConfigParser支持对%(value)s变量的解析。 
 
设定配置文件test2.conf

1.      [portal] 

2.      url = http://%(host)s:%(port)s/Portal 

3.      host = localhost 

4.      port = 8080 


使用RawConfigParser

1.      import ConfigParser 

2.       

3.      cf = ConfigParser.RawConfigParser() 

4.       

5.      print "use RawConfigParser() read"

6.      cf.read("test2.conf") 

7.      print cf.get("portal", "url") 

8.       

9.      print "use RawConfigParser() write"

10.   cf.set("portal", "url2", "%(host)s:%(port)s") 

11.   print cf.get("portal", "url2") 


得到终端输出:
use RawConfigParser() read 
http://%(host)s:%(port)s/Portal 
use RawConfigParser() write 
%(host)s:%(port)s

改用ConfigParser

1.      import ConfigParser 

2.       

3.      cf = ConfigParser.ConfigParser() 

4.       

5.      print "use ConfigParser() read"

6.      cf.read("test2.conf") 

7.      print cf.get("portal", "url") 

8.       

9.      print "use ConfigParser() write"

10.   cf.set("portal", "url2", "%(host)s:%(port)s") 

11.   print cf.get("portal", "url2") 


得到终端输出:
use ConfigParser() read 

use ConfigParser() write 
localhost:8080

改用SafeConfigParser

1.      import ConfigParser 

2.       

3.      cf = ConfigParser.SafeConfigParser() 

4.       

5.      print "use SafeConfigParser() read"

6.      cf.read("test2.conf") 

7.      print cf.get("portal", "url") 

8.       

9.      print "use SateConfigParser() write"

10.   cf.set("portal", "url2", "%(host)s:%(port)s") 

11.   print cf.get("portal", "url2") 


得到终端输出(效果同ConfigParser)
use SafeConfigParser() read 

use SateConfigParser() write 
localhost:8080 

 

阅读(2239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~