• Python读取ini配置文件


    博客已迁移,新地址

    =========================

    需求:

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

    Python支持ini文件的读取


    涉及模块:

    ConfigParser


    xml文件

    db_config.ini
    [baseconf]
    host=127.0.0.1
    port=3306
    user=root
    password=root
    db_name=evaluting_sys
    [concurrent]
    processor=20

    对应的python代码

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    #author: lingyue.wkl
    #desc: use to db ops
    #---------------------
    #2012-02-18 created
    
    #---------------------
    import sys,os
    import ConfigParser
    
    class Db_Connector:
      def __init__(self, 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__":
      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

    #!/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)
    

    ------------------------------

    还需要去整理总结下,后续更新

    装MySQLdb耗费的较多时间,经过linux和win7两种环境下两次折腾

    不折腾了,睡觉,各位,晚安


    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    @media screen针对不同移动设备-响应式设计
    闭包的一些例子
    es6 新关键字const
    es6 新关键字let
    Unity 多屏(分屏)显示,Muti_Display
    小米手机常用操作
    Charles使用笔记
    AKKA学习笔记
    Gatling-Session
    Scala学习笔记-6-其他
  • 原文地址:https://www.cnblogs.com/iplus/p/4464662.html
Copyright © 2020-2023  润新知