Python读取ini配置文件

需求:

写个项目,用到数据库,多个地方使用,不能硬编码。很类似java的properties文件

Python支持ini文件的读取


涉及模块:

ConfigParser


xml文件

  1. db_config.ini  
  2. [baseconf]  
  3. host=127.0.0.1  
  4. port=3306  
  5. user=root  
  6. password=root  
  7. db_name=evaluting_sys  
  8. [concurrent]  
  9. processor=20  

对应的python代码

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. #author: lingyue.wkl  
  4. #desc: use to db ops  
  5. #---------------------  
  6. #2012-02-18 created  
  7.   
  8. #---------------------  
  9. import sys,os  
  10. import ConfigParser  
  11.   
  12. class Db_Connector:  
  13.   def __init__(self, config_file_path):  
  14.     cf = ConfigParser.ConfigParser()  
  15.     cf.read(config_file_path)  
  16.   
  17.     s = cf.sections()  
  18.     print 'section:', s  
  19.   
  20.     o = cf.options("baseconf")  
  21.     print 'options:', o  
  22.   
  23.     v = cf.items("baseconf")  
  24.     print 'db:', v  
  25.   
  26.     db_host = cf.get("baseconf""host")  
  27.     db_port = cf.getint("baseconf""port")  
  28.     db_user = cf.get("baseconf""user")  
  29.     db_pwd = cf.get("baseconf""password")  
  30.   
  31.     print db_host, db_port, db_user, db_pwd  
  32.   
  33.     cf.set("baseconf""db_pass""123456")  
  34.     cf.write(open("config_file_path""w"))  
  35. if __name__ == "__main__":  
  36.   f = Db_Connector("../conf/db_config.ini")  

得到结果:

section: ['concurrent', 'baseconf']
options: ['host', 'db_name', 'user', 'password', 'port']
db: [('host', '127.0.0.1'), ('db_name', 'evaluting_sys'), ('user', 'root'), ('password', 'root'), ('port', '3306')]
127.0.0.1 3306 root root


---------------------------------------------update 2012-09-02

通用模块:支持命令行+import两种形式

ini_op.py

  1. #!/usr/bin/python  
  2. # -*- coding:utf-8 -*-  
  3. #author: lingyue.wkl  
  4. #desc: use to read ini  
  5. #---------------------  
  6. #2012-02-18 created  
  7. #2012-09-02 changed for class support  
  8.   
  9. #---------------------  
  10. import sys,os,time  
  11. import ConfigParser  
  12.   
  13.   
  14. class Config:  
  15.     def __init__(self, path):  
  16.         self.path = path  
  17.         self.cf = ConfigParser.ConfigParser()  
  18.         self.cf.read(self.path)  
  19.     def get(self, field, key):  
  20.         result = ""  
  21.         try:  
  22.             result = self.cf.get(field, key)  
  23.         except:  
  24.             result = ""  
  25.         return result  
  26.     def set(self, filed, key, value):  
  27.         try:  
  28.             self.cf.set(field, key, value)  
  29.             cf.write(open(self.path,'w'))  
  30.         except:  
  31.             return False  
  32.         return True  
  33.               
  34.               
  35.   
  36. def read_config(config_file_path, field, key):   
  37.     cf = ConfigParser.ConfigParser()  
  38.     try:  
  39.         cf.read(config_file_path)  
  40.         result = cf.get(field, key)  
  41.     except:  
  42.         sys.exit(1)  
  43.     return result  
  44.   
  45. def write_config(config_file_path, field, key, value):  
  46.     cf = ConfigParser.ConfigParser()  
  47.     try:  
  48.         cf.read(config_file_path)  
  49.         cf.set(field, key, value)  
  50.         cf.write(open(config_file_path,'w'))  
  51.     except:  
  52.         sys.exit(1)  
  53.     return True  
  54.   
  55. if __name__ == "__main__":  
  56.    if len(sys.argv) < 4:  
  57.       sys.exit(1)  
  58.   
  59.    config_file_path = sys.argv[1]   
  60.    field = sys.argv[2]  
  61.    key = sys.argv[3]  
  62.    if len(sys.argv) == 4:  
  63.       print read_config(config_file_path, field, key)  
  64.    else:  
  65.       value = sys.argv[4]  
  66.       write_config(config_file_path, field, key, value) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值