Python 学习日知录(五)- 配置文件之二
除了基础的section和option外,配置文件还提供了高级一些的用法。
先看一下如下的配置文件:
###############cfg.ini#################
[DEFAULT]
dir = c:/my_app
[basic_config]
temp_dir = %(dir)s/basic_config/
[env_cache]
temp_dir = %(dir)s/env_cache/
###############EOF#####################
运行下面一段代码,打印所有键值对,看看是什么结果:
# -*- coding:utf8 -*-
import ConfigParser # 载入模块
cp = ConfigParser.ConfigParser()
cp.read('mc_cfg.ini') # 载入配置文件
for sections in cp.sections(): # section 循环
print '[ %s ]' % sections # 打印section名字
for options in cp.options(sections): # option 循环
print '%s = %s' % (options, cp.get(sections, options)) # 打印该section下的所有option键值对
print '\n' # 每个section之间空行
运行结果如下:
[ basic_config ]
temp_dir = c:/my_app/basic_config/
dir = c:/my_app
[ env_cache ]
temp_dir = c:/my_app/env_cache/
dir = c:/my_app
可以看到,名字叫DEFAULT
的section并没有被打印出来,而其下的option却出现在了其他所有的section下。
[DEFAULT] 字段
这个section下的option相当于定义了一个全局配置,对于其他所有的section都有效。
DEFAULT
是大小写敏感的- 如果其他section有同名的option,则会覆盖全局的定义
内插(interpolation)
注意上面cfg.ini
文件里的
temp_dir = %(dir)s/basic_config/
打印出来的值为:
c:/my_app/basic_config/
原来其中的%(dir)s被同一个section中或全局的dir值代替了,这样就很方便的实现了在全局配置的基础上生成各自局部配置的功能。