• Python3 中 configparser 模块解析配置的用法详解


    configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近。Python2.x 中名为 ConfigParser,3.x 已更名小写,并加入了一些新功能。 
    配置文件的格式如下:

    [DEFAULT]
    ServerAliveInterval = 45
    Compression = yes
    CompressionLevel = 9
    ForwardX11 = yes
    
    [bitbucket.org]
    User = Tom
    
    [topsecret.com]
    Port: 50022
    ForwardX11: no

    “[ ]”包含的为 section,section 下面为类似于 key - value 的配置内容; 
    configparser 默认支持 ‘=’ ‘:’ 两种分隔。


    configparser 常用方法

    初始化实例

    使用 configparser 首先需要初始化实例,并读取配置文件:

    >>> import configparser
    >>> config = configparser.ConfigParser()    # 注意大小写
    >>> config.read("config.ini")   # 配置文件的路径
    ["config.ini"]

    或者可以直接读字典

    >>> parser = configparser.ConfigParser()
    >>> parser.read_dict({'section1': {'key1': 'value1',
    ...                                'key2': 'value2',
    ...                                'key3': 'value3'},
    ...                   'section2': {'keyA': 'valueA',
    ...                                'keyB': 'valueB',
    ...                                'keyC': 'valueC'},
    ...                   'section3': {'foo': 'x',
    ...                                'bar': 'y',
    ...                                'baz': 'z'}
    ... })

    获取所有 sections

    >>> config.sections()
    ['bitbucket.org', 'topsecret.com']    # 注意会过滤掉[DEFAULT]

    获取指定 section 的 keys & values

    >>> config.items('topsecret.com')
    >>>> [('port', '50022'), ('forwardx11', 'no')]    # 注意items()返回的字符串会全变成小写

    获取指定 section 的 keys

    >>> config.options('topsecret.com')
    ['Port', 'ForwardX11']
    
    
    >>> for option in config['topsecret.com']:
    ...     print(option)
    Port
    ForwardX11

    获取指定 key 的 value

    >>> config['bitbucket.org']['User']
    'Tom'
    
    
    >>> config.get('bitbucket.org', 'User')
    'Tom'
    >>> config.getint('topsecret.com', 'Port')
    50022

    检查

    >>> 'DEFAULT' in config
    True
    >>> 'test' in config['section_test']
    False
    >>> 'Tom' in config['bitbucket.org']['User']
    True
    >>> config.has_section('bitbucket.org')
    True
    >>> config.has_option('section_test', 'test')
    False

    添加

    >>> config.add_section('Section_1')
    >>> config.set('Section_1', 'key_1', 'value_1')    # 注意键值是用set()方法
    >>> config.write(open('config.ini', 'w'))    # 一定要写入才生效

    删除

    >>> config.remove_option('Section_1', 'key_1')
    True
    >>> config.remove_section('Section_1')
    True
    >>> config.clear()  # 清空除[DEFAULT]之外所有内容
    >>> config.write(open('config.ini', 'w'))

    关于 [DEFAULT]

    [DEFAULT] 一般包含 ini 格式配置文件的默认项,所以 configparser 部分方法会自动跳过这个 section 。 
    前面已经提到 sections() 是获取不到的,还有删除方法对 [DEFAULT] 也无效:

    >>> config.remove_section('DEFAULT')
    False
    >>> config.clear()
    >>> 'DEFAULT' in config
    True
    >>> 'ForwardX11' in config['DEFAULT']
    True
    >>> config.sections()
    []

    但指定删除和修改 [DEFAULT] 里的 keys & values 是可以的:

    >>> config.remove_option('DEFAULT', 'ForwardX11')
    True
    >>> config.set('DEFAULT', 'ForwardX11','no')
    >>> config['DEFAULT']['ForwardX11']
    'no'

    还有个特殊的是,has_section() 也无效,可以和 in 区别使用

    >>> config.has_section('DEFAULT')
    False
    >>> 'DEFAULT' in config
    True
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/jeavy/p/9521573.html
Copyright © 2020-2023  润新知