使用到的包:ConfigParser 文档
代码托管位置 github-pytools
需求
写个项目,用到数据库,多个地方使用,不能硬编码。很类似java的properties文件
Python支持ini文件的读取
ini文件
db_config.ini
1 2 3 4 5 6 7 8 |
[baseconf] host=127.0.0.1 port=3306 user=root password=root db_name=evaluting_sys [concurrent] processor=20 |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/usr/bin/python # -*- coding:utf-8 -*- #author: lingyue.wkl #desc: use to db ops #--------------------- #2012-02-18 created #--------------------- import sys,os import ConfigParser def test(config_file_path): cf = ConfigParser.ConfigParser() cf.read(config_file_path) s = cf.sections() print 'section:', s o = cf.options("baseconf") print 'options:', o v = cf.items("baseconf") print 'db:', v db_host = cf.get("baseconf", "host") db_port = cf.getint("baseconf", "port") db_user = cf.get("baseconf", "user") db_pwd = cf.get("baseconf", "password") print db_host, db_port, db_user, db_pwd cf.set("baseconf", "db_pass", "123456") cf.write(open("config_file_path", "w")) if __name__ == "__main__": test("../conf/db_config.ini") |
通用模块init_op.py
支持命令行+import两种
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#!/usr/bin/python # -*- coding:utf-8 -*- #author: lingyue.wkl #desc: use to read ini #--------------------- #2012-02-18 created #2012-09-02 changed for class support #--------------------- import sys,os,time import ConfigParser class Config: def __init__(self, path): self.path = path self.cf = ConfigParser.ConfigParser() self.cf.read(self.path) def get(self, field, key): result = "" try: result = self.cf.get(field, key) except: result = "" return result def set(self, filed, key, value): try: self.cf.set(field, key, value) cf.write(open(self.path,'w')) except: return False return True def read_config(config_file_path, field, key): cf = ConfigParser.ConfigParser() try: cf.read(config_file_path) result = cf.get(field, key) except: sys.exit(1) return result def write_config(config_file_path, field, key, value): cf = ConfigParser.ConfigParser() try: cf.read(config_file_path) cf.set(field, key, value) cf.write(open(config_file_path,'w')) except: sys.exit(1) return True if __name__ == "__main__": if len(sys.argv) 4: sys.exit(1) config_file_path = sys.argv[1] field = sys.argv[2] key = sys.argv[3] if len(sys.argv) == 4: print read_config(config_file_path, field, key) else: value = sys.argv[4] write_config(config_file_path, field, key, value) |