ConfigParser


http://blog.csdn.net/cindy9902/article/details/7915743

http://blog.sina.com.cn/s/blog_65a8ab5d0101ffqq.html

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.    [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. #update 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'sa_key1: i'm value 

value for sec_a'sa_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.    ConfigParser Module类

Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(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") 

 

得到终端输出:

useRawConfigParser() read 

http://%(host)s:%(port)s/Portal 

useRawConfigParser() 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 

http://localhost:8080/Portal 

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):

useSafeConfigParser() read 

http://localhost:8080/Portal 

useSateConfigParser() write 

localhost:8080 

 

你可能感兴趣的:(Python)