当前位置 博文首页 > python读写ini文件示例(python读写文件)

    python读写ini文件示例(python读写文件)

    作者:admin 时间:2021-07-03 18:47

    很类似java的properties文件

    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

    通用模块:支持命令行+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)

    第二个示例


    复制代码 代码如下:

    import os
    import ConfigParser

    def main():
        cp = ConfigParser.ConfigParser()   
        cf = open(u"in.ini")
        cp.readfp(cf)

        secs = cp.sections()
        print cp.sections()

        for sec in secs:
            opts = cp.options(sec)
            for opt in opts:
                val = cp.get(sec, opt)
                val += "test....."
                cp.set(sec, opt, val)

        cp.write(open("out.ini", "w"))

    if __name__ == '__main__':
        main()

    jsjbwy
    下一篇:没有了