zoukankan      html  css  js  c++  java
  • 【转】Python3 configparse模块(配置)

    【转】Python3 configparse模块(配置)

    ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。 
    注意:在python 3 中ConfigParser模块名已更名为configparser

    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
    config.read('example.ini',encoding="utf-8")
    """读取配置文件,python3可以不加encoding"""
    options(section)
    """sections(): 得到所有的section,并以列表的形式返回"""
    config.defaults()
    """defaults():返回一个包含实例范围默认值的词典"""
    config.add_section(section)
    """添加一个新的section"""
    config.has_section(section)
    """判断是否有section"""
    print(config.options(section))
    """得到该section的所有option"""
    has_option(section, option)
    """判断如果section和option都存在则返回True否则False"""
    read_file(f, source=None)
    """读取配置文件内容,f必须是unicode"""
    read_string(string, source=’’)
    """从字符串解析配置数据"""
    read_dict(dictionary, source=’’)
    """从词典解析配置数据"""
    get(section, option, *, raw=False, vars=None[, fallback])
    """得到section中option的值,返回为string类型"""
    getint(section,option)
    """得到section中option的值,返回为int类型"""
    getfloat(section,option)
    """得到section中option的值,返回为float类型"""
    getboolean(section, option)
    """得到section中option的值,返回为boolean类型"""
    items(raw=False, vars=None)
    """和items(section, raw=False, vars=None):列出选项的名称和值"""
    set(section, option, value)
    """对section中的option进行设置"""
    write(fileobject, space_around_delimiters=True)
    """将内容写入配置文件。"""
    remove_option(section, option)
    """从指定section移除option"""
    remove_section(section)
    """移除section"""
    optionxform(option)
    """将输入文件中,或客户端代码传递的option名转化成内部结构使用的形式。默认实现返回option的小写形式;"""
    readfp(fp, filename=None)
    """从文件fp中解析数据"""

    生成configparser文件实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import configparser  #配置文件
    config = configparser.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['Host Port'] = '50022'  # mutates the parser
    topsecret['ForwardX11'] = 'no'  # same here
     
    config['DEFAULT']['ForwardX11'] = 'yes'
    """写入后缀为.ini的文件"""
    with open('example.ini', 'w') as configfile:
        config.write(configfile)

    运行结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [DEFAULT]
    serveraliveinterval = 45
    compression = yes
    compressionlevel = 9
    forwardx11 = yes
     
    [bitbucket.org]
    user = hg
     
    [topsecret.server.com]
    host port = 50022
    forwardx11 = no

    读取configparser配置文件的实例

    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
    import configparser  #配置文件
    config = configparser.ConfigParser()
    config.read("example.ini")
     
    print("所有节点==>",config.sections())
     
    print("包含实例范围默认值的词典==>",config.defaults())
     
    for item in config["DEFAULT"]:
        print("循环节点topsecret.server.com下所有option==>",item)
     
    print("bitbucket.org节点下所有option的key,包括默认option==>",config.options("bitbucket.org"))
     
    print("输出元组,包括option的key和value",config.items('bitbucket.org'))
     
    print("bitbucket.org下user的值==>",config["bitbucket.org"]["user"]) #方式一
     
    topsecret = config['bitbucket.org']
    print("bitbucket.org下user的值==>",topsecret["user"]) #方式二
     
    print("判断bitbucket.org节点是否存在==>",'bitbucket.org' in config)
     
    print("获取bitbucket.org下user的值==>",config.get("bitbucket.org","user"))
     
    print("获取option值为数字的:host port=",config.getint("topsecret.server.com","host port"))

    运行结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    所有节点==> ['bitbucket.org', 'topsecret.server.com']
    包含实例范围默认值的词典==> OrderedDict([('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes')])
    循环节点topsecret.server.com下所有option==> serveraliveinterval
    循环节点topsecret.server.com下所有option==> compression
    循环节点topsecret.server.com下所有option==> compressionlevel
    循环节点topsecret.server.com下所有option==> forwardx11
    bitbucket.org节点下所有option的key,包括默认option==> ['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']
    输出元组,包括option的key和value [('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')]
    bitbucket.org下user的值==> hg
    bitbucket.org下user的值==> hg
    判断bitbucket.org节点是否存在==> True
    获取bitbucket.org下user的值==> hg
    获取option值为数字的:host port= 50022

    删除配置文件section和option的实例(默认分组有参数时无法删除,但可以先删除下面的option,再删分组)

    1
    2
    3
    4
    5
    6
    7
    8
    import configparser  #配置文件
    config = configparser.ConfigParser()
    config.read("example.ini")
    config.remove_section("bitbucket.org")
    """删除分组"""
    config.remove_option("topsecret.server.com","host port")
    """删除某组下面的某个值"""
    config.write(open('example.ini', "w"))

    运行结果

    1
    2
    3
    4
    5
    6
    7
    8
    [DEFAULT]
    serveraliveinterval = 45
    compression = yes
    compressionlevel = 9
    forwardx11 = yes
     
    [topsecret.server.com]
    forwardx11 = no

    配置文件的修改实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    """修改"""
    import configparser
    config = configparser.ConfigParser()
    config.read("example.ini")
    config.add_section("new_section")
    """新增分组"""
    config.set("DEFAULT","compressionlevel","110")
    """设置DEFAULT分组下compressionlevel的值为110"""
    config.write(open('example.ini', "w"))

    运行结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [DEFAULT]
    serveraliveinterval = 45
    compression = yes
    compressionlevel = 110
    forwardx11 = yes
     
    [topsecret.server.com]
    forwardx11 = no
     
    [new_section]
  • 相关阅读:
    学习笔记—查找
    水晶报表图表制作问题
    Chrome对最小字体的限制
    Devexpress的ASPxDateEdit控件设置其‘today’ 为客户端当前日期
    水晶报表多表数据源
    System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded
    利用水晶报表制作甘特图
    水晶报表打印时最后多打印一空白页
    day3学习
    Python高级自动化培训day1
  • 原文地址:https://www.cnblogs.com/langqi250/p/10038662.html
Copyright © 2011-2022 走看看