• 小白的Python之路 day5 configparser模块的特点和用法


    configparser模块的特点和用法

    一、概述

      主要用于生成和修改常见配置文件,当前模块的名称在 python 3.x 版本中变更为 configparser。在python2.x版本中为ConfigParser

    二、格式

      常见配置文件格式如下:

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

    三、主要用法 

    1、创建配置文件

     1 import  configparser   #导入configparser模块
     2  
     3 #生成一个对象
     4 config = configparser.ConfigParser()
     5 #配置默认全局配置组
     6 config["DEFALUT"] = {"ServerAliveInterval":"45",
     7                       "Compression":"yes",
     8                       "CompressionLevel":"9"
     9                       }
    10 #配置第一个其他组
    11 config["bitbucket.org"] = {}
    12 #直接赋值
    13 config["bitbucket.org"]["User"] = 'hg'
    14  
    15 #配置第二个其他组
    16 config["topsecret.server.com"] = {}
    17 #这边就赋给一个变量
    18 topsecret = config["topsecret.server.com"]
    19 #通过变量赋值
    20 topsecret["Host Port"] = '50022'
    21 topsecret["ForwardX11"] = 'no'
    22 #给全局配置组赋值
    23 config["DEFALUT"]["ForwardX11"] = "yes"
    24 #操作完毕,把配置的内容写入一个配置文件中
    25 with open("example.ini","w") as configfile:
    26     config.write(configfile)

     

    2、读取配置文件

    1)、读取配置组

     1 >>> import  configparser
     2 >>> config = configparser.ConfigParser()
     3 >>> config.sections()    #不读取配置文件,组名列表为空
     4 []
     5 >>> config.read("example.ini")  #读取配置文件,返回配置文件名
     6 ['example.ini']
     7 >>> config.sections()  #返回除默认配置组的其他组名
     8 ['bitbucket.org', 'topsecret.server.com']
     9 >>> config.defaults()   #读取默认配置组,并返回有序字典
    10 OrderedDict([('compressionlevel', '9'), ('serveraliveinterval', '45'), ('compression', 'yes'), ('forwardx11', 'yes')])

    2)、组名是否存在

    1 >>> 'bitbucket.org' in config   #组名存在
    2 True
    3 >>> 'zhangqigao.org'  in config   #组名不存在
    4 False

    3)、读取组内的值

    1 >>> config["bitbucket.org"]["User"]  #读取"bitbucket.org"配置组中的值
    2 'hg'
    3 >>> config["DEFAULT"]["Compression"]  #读取默认配置组中的值
    4 'yes'
    5 >>> topsecret = config['topsecret.server.com']  #把配置组赋给一个对象
    6 >>> topsecret['ForwardX11']   #通过对象获取值

    4)、 循环获取组内的key值

     1 >>> for key in config["bitbucket.org"]:  #循环打印bitbucket.org组下的key值
     2 ...     print(key)
     3 ...
     4 #输出,只打印默认组和bitbucket.org组的key值
     5 user
     6 compressionlevel
     7 serveraliveinterval
     8 compression
     9 forwardx11
    10 >>> for key in config["topsecret.server.com"]:#循环打印topsecret.server.com组下的key值
    11 ...     print(key)
    12 ...
    13 #输出,只打印默认组和topsecret.server.com组的key值
    14 host port
    15 forwardx11
    16 compressionlevel
    17 serveraliveinterval
    18 compression

    重点:

    四、configparser增删改查语法

    1、配置文件名i.cfg

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [DEFAULT]
    k1 = v1
    k2 = v2
     
    [section1]
    k3 = v3
    k4:v4
     
    [section2]
    k5 = 5

    2、读i.cfg

    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
    import configparser
     
    config = configparser.ConfigParser()
    config.read("i.cfg")
    sec = config.sections()
    print(sec)
    #输出
    ['section1''section2']
     
    options = config.options("section2")  #返回默认组和section2组的key值
    print(options)
    #输出
    ['k5''k1''k2']
     
    item_list = config.items("section2")   #返回默认组和section2组的key-value值
    print(item_list)
    #输出
    [('k1''v1'), ('k2''v2'), ('k5''5')]
     
    val1 = config.get("section2","k1")   #获取section2组中k1对应的值,是否可取是按照上面返回的列表
    print(val1)
    #输出
    v1
     
    val2  = config.getint("section2","k5")  #返回section2中k5的值,这个值返回的int类型的
    print(val2)
    #输出
    5

    3、改写i.cfg

    ①删除section和option

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import configparser
     
    config = configparser.ConfigParser()
     
    config.read("i.cfg")
    config.remove_option("section1","k3")  #删除section1组下的k3
    config.remove_section("section2")   #删除section2组
    with open("i.cfg2","w") as f:   #重新写入一个文件
        config.write(f)
     
    #输出,写入文件的内容
    [DEFAULT]
    k1 = v1
    k2 = v2
     
    [section1]
    k4 = v4

    ②添加section

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import configparser
     
    config = configparser.ConfigParser()
    config.read("i.cfg")
    sec = config.has_option("section2","k5")  #是否存在section2组内有k5
    print(sec)
    #输出
    True
     
    sec = config.has_section("duoduo")  #是否存在duoduo组
    print(sec)
    #输出
    False
     
    config.add_section("duoduo")  #添加section组duoduo
     
    config.add_section("duoduo")  #重新写入到一个配置文件中
    with open("i.cfg3","w") as f:
        config.write(f)

     ③添加或者设置option

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import configparser
     
    config = configparser.ConfigParser()
    config.read("i.cfg")
     
    config.set("duoduo","z","18")  #设置或者添加duoduo中option值
     
    with open("i.cfg3","w") as f:   #重新写入文件中
        config.write(f)
  • 相关阅读:
    Grub 和 UEFI启动
    神舟战神插上耳机没有声音,重启又有声音..
    批处理 ------ @、ECHO OFF、ECHO ON 的使用
    linux command ------ find
    Adobe Premiere Pro CC ------ 快捷键
    分布式session一致性问题
    DNS域名解析
    CDN内容分发
    令牌桶限流算法和漏桶限流算法区别
    AOP与IOC区别
  • 原文地址:https://www.cnblogs.com/ManyQian/p/8353436.html
Copyright © 2020-2023  润新知