configparser配置文件解析模块

configparser配置文件解析模块

配置文件

  1. 配置文件中包含一个或多个 section, 每个 section 有自己的 option;

  2. section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符=: 隔开;

  3. 在 option 分隔符两端的空格会被忽略掉

  4. 配置文件使用#;注释

示例:

# 站点配置
[web]
# 目标服务器
servername = wyao.club
# 目标站点目录
homedir = new_my_site
# 原站点目录
sitefiledir = old_my_site
# 存放转向链接文件的临时目录 
uploaddir = temp
# 模板文件名
templatename = template.html

configparser 的基本操作

  1. 创键对象
import configparser

config = configparser.SafeConfigParser()

# ascii编码打开
config.read('配置文件名')

# 配置文件中想要包含中文Unicode编码等需要使用codecs模块以合适的编码打开
import codecs

f = codecs.open('配置文件名', 'r', encoding='utf-8')
config.readfp(f)
f.close()
  1. 读取 section 列表, option 键列表, option 键值元组列表, option值
config.sections()  # 获取 section 列表
config.options('section_name')  # option 键列表
config.items('section_name')  # option 键值元组
config.get('section_name', 'option_key')  # option值,还可以按类型读取配置信息:getint、 getfloat 和 getboolean
  1. 判断是否存在
config.has_section('section_name')  # section 是否存在
config.has_option('section_name', 'option_key')  #  option 是否存在
  1. 更改配置
config.add_section('section_name')  # 增加section
config.set('section_name', 'option_key', 'option_value')  # 设置option
config.remove_section('section_name')  # 删除section
config.remove_option('section_name', 'option_key')  # 删除option

# 保存配置,以上操作并不会修改配置文件
config.write(open('配置文件名', 'w'))
config.write(sys.stdout) 

其他注意

  1. allow_no_value

当 SafeConfigParser 的参数 allow_no_value 设置成 True 时,它允许 option 不设置值而只是作为一个标识

  1. DEFAULT section

配置文件中存在一个名为 DEFAULT 的 section,那么其他 section 会扩展它的 option 并且可以覆盖它的 option(相当于一个所有其他section都会继承的父类)

  1. 插值 Interpolation

option中,option_value可以将同一section中的其他option_key作为变量%(option_key)s

示例:

[DEFAULT]
url = %(protocol)s://%(server)s:%(port)s/

[http]
protocol = http
server = localhost
port = 8080


config.get('http', 'url')
  1. 字典创建配置文件,也可以字典方式获取
    config[‘DEFAULT’] = {‘ServerAliveInterval’: ‘45’,
    ‘Compression’: ‘yes’,
    ‘CompressionLevel’: ‘9’}

with open(‘example.ini’, ‘w’) as configfile:
config.write(configfile)

  1. 键部分不区分大小写,以小写形式存储

  2. 可以用get()方法指定后备值

猜你喜欢

转载自blog.csdn.net/qq_32392853/article/details/81603659