【python】configparser--配置文件解析器

举报
子都爱学习 发表于 2021/11/08 21:23:16 2021/11/08
【摘要】 此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似。 你可以使用这种语言来编写能够由最终用户来自定义的 Python 程序。新建 .ini 配置文件我们利用 configparser 模块新建一个 example.ini 配置文件import configparserconfig = configp...

此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似。 你可以使用这种语言来编写能够由最终用户来自定义的 Python 程序。

新建 .ini 配置文件

我们利用 configparser 模块新建一个 example.ini 配置文件

import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {'ServerAliveInterval': '45',
                     'Compression': 'yes',
                     'CompressionLevel': '9'}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Port'] = '50022'     # mutates the parser
topsecret['ForwardX11'] = 'no'  # same here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:
  config.write(configfile)

基本的配置文件,生成后是这样的:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no

从配置文件中获取值

config = configparser.ConfigParser()
config.sections()
# []
config.read('example.ini')
# ['example.ini']
config.sections()
['bitbucket.org', 'topsecret.server.com']
'bitbucket.org' in config
# True
'bytebong.com' in config
# False
config['bitbucket.org']['User']
# 'hg'
config['DEFAULT']['Compression']
# 'yes'
topsecret = config['topsecret.server.com']
topsecret['ForwardX11']
# 'no'
topsecret['Port']
# '50022'
for key in config['bitbucket.org']:  
    print(key)

user
# compressionlevel
# serveraliveinterval
# compression
# forwardx11

config['bitbucket.org']['ForwardX11']
# 'yes'

【注】
    相关的 API 相当直观。 唯一有些神奇的地方是
 DEFAULT 小节,它为所有其他小节提供了默认值 
    还要注意小节中的键大小写不敏感并且会存储为小写形式
    将多个配置读入单个
 ConfigParser 是可能的,其中最近添加的配置具有最高优先级。
    任何冲突的键都会从更近的配置获取并且先前存在的键会被保留

回退值

与字典类似,你可以使用某个小节的 get() 方法来提供回退值:

topsecret.get('Port')
# '50022'
topsecret.get('CompressionLevel')
# '9'
topsecret.get('Cipher')
topsecret.get('Cipher', '3des-cbc')
# '3des-cbc'

topsecret.get('CompressionLevel', '3')
# '9'

请注意默认值会优先于回退值。 例如,在我们的示例中 'CompressionLevel' 键仅在 'DEFAULT' 小节被指定。 如果你尝试在 'topsecret.server.com' 小节获取它,我们将总是获取到默认值,即使我们指定了一个回退值


configparser 修改ini文件
示例

import configparser
conf = configparser.ConfigParser() # 创建管理对象
conf.read('example.ini')    # 读ini文件
sections = conf.sections()  # 获取所有的section
print(sections)      # 返回list
items = conf.items('email_163') # 获取一个section的值(对象是元组)
print(items)

# 删除一个 section中的一个item (以键值)
conf.remove_option('email_163', 'port')
# 删除一个 section
conf.remove_section('email_163')

# 添加一个section
conf.add_section('email_163')
# 往section中添加key和value(也可以作为修改某一个值)
conf.set('email_163', 'port', '3306')

# 修改section中的某一个值
conf['email_163']['port'] = "3306"

# 1.删除原文件写入
conf.write(open('example.ini', 'w'))
# 2.在原有基础上追加写入
conf.write(open('example.ini', 'a'))
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。