python的ConfigParse模块

https://blog.csdn.net/talkxin/article/details/50637959

使用ConfigParser模块读写ini文件

ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。模块所解析的ini配置文件是由多个section构成,每个section名用中括号‘[]’包含,每个section下可有多个配置项类似于key-value形式,例如:

[Server]

SvrInfo = test

Version = 1.1

[Client]

Version = 1.0

ConfigParser模块以ConfigParser类为例,其操作基本分为三类:1)初始化;2)读取配置;3)写入配置。

1. ConfigParser 初始化

使用ConfigParser 首选需要初始化实例,并读取配置文件:

cf = ConfigParser.ConfigParser() cf.read("配置文件名")

2. 基本的读取配置文件

-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() 函数。

 

3.基本的写入配置文件

-add_section(section) 添加一个新的section

-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。

-write(strout) 将对configparser类的修改写入

例如:

 
  1. test.conf

  2.  
  3. [sec_a]

  4. a_key1 = 20

  5. a_key2 = 10

  6.  
  7. [sec_b]

  8. b_key1 = 121

  9. b_key2 = b_value2

  10. b_key3 = $r

  11. b_key4 = 127.0.0.1

  12.  
  13. import ConfigParser

  14.  
  15. #初始化

  16. cf = ConfigParser.ConfigParser()

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

  18.  
  19. # 读取配置文件

  20. secs = cf.sections()

  21. print 'sections:', secs

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

  23. print 'options:', opts

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

  25. print 'sec_a:', kvs

  26.  
  27. #read by type

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

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

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

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

  32.  
  33. #写入配置文件

  34. #update value

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

  36. #set a new value

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

  38. #create a new section

  39. cf.add_section('a_new_section')

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

  41.  
  42. #write back to configure file

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

  44.  
  45. 得到终端输出:

  46. sections: ['sec_b', 'sec_a']

  47. options: ['a_key1', 'a_key2']

  48. sec_a: [('a_key1', "i'm value"), ('a_key2', '22')]

  49. value for sec_a's a_key1: i'm value

  50. value for sec_a's a_key2: 22

  51.  
  52. 更新后的test.conf

  53.  
  54. [sec_b]

  55. b_newkey = new-value

  56. b_key4 = 127.0.0.1

  57. b_key1 = 121

  58. b_key2 = b_value2

  59. b_key3 = new-$r

  60.  
  61. [sec_a]

  62. a_key1 = i'm value

  63. a_key2 = 22

  64.  
  65. [a_new_section]

  66. new_key = new_value

Python的ConfigParser Module定义的3个类中,RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。
 

 
  1. 设定配置文件test2.conf

  2.  
  3. [portal]

  4. url = http://%(host)s:%(port)s/Portal host = localhost port = 8080

  5. 使用RawConfigParser:

  6.  
  7. import ConfigParser

  8.  
  9. cf = ConfigParser.RawConfigParser()

  10.  
  11. print "use RawConfigParser() read"

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

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

  14. print "use RawConfigParser() write"

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

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

 
  1.  
  2. 得到终端输出:

use RawConfigParser() read 
 
  1. http://%(host)s:%(port)s/Portal

  2. use RawConfigParser() write

 
  1. %(host)s:%(port)s

  2.  
  3. 改用ConfigParser:

  4.  
  5. import ConfigParser

  6.  
  7. cf = ConfigParser.ConfigParser()

  8.  
  9. print "use ConfigParser() read"

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

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

  12. print "use ConfigParser() write"

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

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

 
  1.  
  2. 得到终端输出:

use ConfigParser() read 
 
  1. http://localhost:8080/Portal

  2. use ConfigParser() write

 
  1. localhost:8080

  2.  
  3. 改用SafeConfigParser:

  4.  
  5. import ConfigParser

  6.  
  7. cf = ConfigParser.SafeConfigParser()

  8.  
  9. print "use SafeConfigParser() read"

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

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

  12. print "use SateConfigParser() write"

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

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

 
  1.  
  2. 得到终端输出(效果同ConfigParser):

 
  1. use SafeConfigParser() read

  2. http://localhost:8080/Portal

use SateConfigParser() write 
localhost:8080 

另外,几种常见的异常:

Exception NoSectionError
当没有发现给定section时抛出。

Exception DuplicateSectionError
如果add_section()方法被调用时,提供的section参数的值已经存在时抛出。

Exception NoOptionError
指定option不存在时抛出。

Exception InterpolationError
执行字符串填补时抛出的异常的基类。

Exception InterpolationDepthError
当填补字符串因为迭代次数超过了MAX_INTERPOLATION_DEPTH值时抛出的异常,InterpolationError的子类。

Exception InterpolationMissingOptionError 
当option引用的值不存在时抛出,该异常为InterpolationError的子类,2.3版本新加。

Exeption InterpolationSyntaxError
当原文件格式没有遵守规定的语法时抛出的异常,继承至InterpolationError,2.3版本。

Exception MissingSectionHeaderError
尝试解析没有section头的文件时抛出。

Exception ParsingError
解析文件时发生错误。

 

转自:http://houwenhui.gotoip2.com/archives/1132

转自:http://www.linuxso.com/linuxbiancheng/8987.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值