如何使用Python模块解析配置文件?

开发 后端
Python明晰的语法使其成为一种学习曲线平和的编程语言,我们使用Python来代替动态链接库形式的插件。

Python模块中现在已经有成熟的技术了,比如ODBC和JDBC,Python的数据库访问层看起来就过于原始了,但是,这同样改变不了其协同性能缺乏的严重性。

在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在Python模块里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介绍。

ConfigParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个Python模块下又有多个配置项,比如:

  1. [db]  
  2. db_host=127.0.0.1  
  3. db_port=3306 
  4. db_user=root 
  5. db_pass=password 
  6. [concurrent]  
  7. thread=10 
  8. processor=20 

假设上面的配置文件的名字为test.conf。里面包含两个section,一个是db, 另一个是concurrent, db里面还包含有4项,concurrent里面有两项。这里来做做解析:

  1. #-*- encoding: gb2312 -*-  
  2. import ConfigParser  
  3. import string, os, sys  
  4.  
  5. cf = ConfigParser.ConfigParser()  
  6. cf.read("test.conf")  
  7. # 返回所有的section  
  8. s = cf.sections()  
  9. print 'section:', s  
  10.  
  11. o = cf.options("db")  
  12. print 'options:', o  
  13.  
  14. v = cf.items("db")  
  15. print 'db:', v  
  16.  
  17. print '-'*60  
  18. #可以按照类型读取出来  
  19. db_host = cf.get("db", "db_host")  
  20. db_port = cf.getint("db", "db_port")  
  21. db_user = cf.get("db", "db_user")  
  22. db_pass = cf.get("db", "db_pass")  
  23.  
  24. # 返回的是整型的  
  25. threads = cf.getint("concurrent", "thread")  
  26. processors = cf.getint("concurrent", "processor")  
  27.  
  28. print "db_host:", db_host  
  29. print "db_port:", db_port  
  30. print "db_user:", db_user  
  31. print "db_pass:", db_pass  
  32.  
  33. print "thread:", threads  
  34. print "processor:", processors  
  35. #修改一个值,再写回去  
  36. cf.set("db", "db_pass", "zhaowei")  
  37. cf.write(open("test.conf", "w")) 

【编辑推荐】

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解决方案
  5. 浅析Python的GIL和线程安全
责任编辑:chenqingxiang 来源: 清华大学出版社
相关推荐

2021-07-05 12:09:58

Python编程语言

2022-11-10 09:05:18

Lua配置文件

2010-03-18 18:17:01

Python 配置文件

2011-03-28 09:07:26

Nagios配置文件

2020-11-20 06:30:07

Pythonini配置文件编程语言

2021-07-08 21:19:04

BashLinux

2009-06-08 16:44:00

Struts配置文件

2010-02-22 10:18:18

WCF配置文件

2019-11-22 10:00:53

ICC配置文件Windows 10

2021-07-13 05:47:40

GroovyJSON软件开发

2010-12-27 14:59:31

Outlook 配置文

2024-01-17 07:12:26

MySQL配置文件数据库

2010-03-19 11:18:07

Python读写配置文

2011-09-08 16:07:13

Widget配置文件

2009-12-21 11:19:50

WCF配置文件

2009-11-05 10:30:41

WCF Address

2021-11-07 14:00:16

JekyllBashAPI后端

2021-12-02 18:15:39

网络库Ratel设计

2020-12-15 08:03:57

Mybatis配置文件

2020-10-20 10:12:00

Windows
点赞
收藏

51CTO技术栈公众号