样例文件

  • 该类配置文件可以包含一个或多个节(section),每个节可以有多个参数(键=值)。
  • 样例配置文件(/proj/conf/example_conf)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [book]
    title:ConfigParser模块教程
    author:大头爸爸
    email:366500050@qq.com
    time:2012-09-20 22:04:55
    [size]
    size:1024
    [other]
    blog:csdn.net
  • 上面配置文件中用的是冒号,也可以用等号。

读取配置文件

  • 示例文件: example.py

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    # -*- coding: utf-8 -*-
    import ConfigParser
    import string
    config=ConfigParser.ConfigParser()
    config.read(u'/proj/conf/example_conf')
    print string.upper(config.get("book","title")),
    print "by",config.get("book","author"),
    print "("+config.get("book","email")+")"
    print
    print config.get("size","size")
    print
    print config.sections()
    for section in config.sections():
        print section
        for option in config.options(section):
            print " ",option,"=",config.get(section,option)
  • example.py文件执行结果

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    CONFIGPARSER模块教程 by 大头爸爸 (366500050@qq.com)
    1024
      ['book', 'size', 'other']
    book
      title = ConfigParser模块教程
      author = 大头爸爸
      email = 366500050@qq.com
      time = 2012-09-20 22:04:55  size
      size = 1024  other
      blog = csdn.n

写入配置文件

  • 示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    import ConfigParser
    import sys
    config=ConfigParser.ConfigParser()
    config.add_section("book")
    config.set("book","title","这是标题")
    config.set("book","author","大头爸爸")
    config.add_section("size")
    config.set("size","size",1024)
    config.write(sys.stdout)
  • 执行结果

    1
    2
    3
    4
    5
    
    [book]
    title = 这是标题
    author = 大头爸爸
    [size]
    size = 1024

ConfigParser方法

  • 创建ConfigParser实例

    1
    
    config=ConfigParser.ConfigParser()
  • 返回配置文件中节序列

    1
    
    config.sections()
  • 返回某个项目中的所有键的序列

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.options(section)
  • 返回section节中,option的键值

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.get(section,option)
  • 添加一个配置文件节点(str)

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.add_section(str)
  • 设置section节点中,键名为option的值(val)

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.set(section,option,val)
  • 读取配置文件

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.read(filename)
  • 写入配置文件

    1
    2
    
    config=ConfigParser.ConfigParser()
    config.write(obj_file)

综合实例

 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
#coding=utf-8

import ConfigParser

def writeConfig(filename):
    config = ConfigParser.ConfigParser()
    # set db
    section_name = 'db'
    config.add_section( section_name )
    config.set( section_name, 'dbname', 'MySQL')
    config.set( section_name, 'host', '127.0.0.1')
    config.set( section_name, 'port', '80')
    config.set( section_name, 'password', '123456')
    config.set( section_name, 'databasename', 'test')

    # set app
    section_name = 'app'
    config.add_section( section_name )
    config.set( section_name, 'loggerapp', '192.168.20.2')
    config.set( section_name, 'reportapp', '192.168.20.3')

    # write to file
    config.write( open(filename, 'a') )

def updateConfig(filename, section, **keyv):
    config = ConfigParser.ConfigParser()
    config.read(filename)
    print config.sections()
    for section in config.sections():
        print "[",section,"]"
        items = config.items(section)
        for item in items:
            print "\t",item[0]," = ",item[1]
    print config.has_option("dbname", "MySQL")
    print config.set("db", "dbname", "11")
    print "..............."
    for key in keyv:
        print "\t",key," = ", keyv[key]
    config.write( open(filename, 'r+') )

if __name__ == '__main__':
    file_name = 'test.ini'
    writeConfig(file_name)
    updateConfig(file_name, 'app', reportapp = '192.168.100.100')
    print "end__"