使用到的包:ConfigParser 文档
代码托管位置 github-pytools
写个项目,用到数据库,多个地方使用,不能硬编码。很类似java的properties文件
Python支持ini文件的读取
db_config.ini
12345678 | [baseconf]host=127.0.0.1port=3306user=rootpassword=rootdb_name=evaluting_sys[concurrent]processor=20 |
12345678910111213141516171819202122232425262728293031323334 | #!/usr/bin/python# -*- coding:utf-8 -*-#author: lingyue.wkl#desc: use to db ops#———————#2012-02-18 created#——————— import sys,osimport ConfigParserdef 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\”) |
支持命令行+import两种
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | #!/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,timeimport 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) |