zoukankan      html  css  js  c++  java
  • python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析

    非标准配置文件也是经常使用的,如何使用configparser来解析?

    这要从configparser本身解析结构来说,configparser包含section和option,非标准配置文件只有option,那么可以人为先加上一个section最后再去掉section

    思路是这样,那么就可以操作了,我们使用config.ini文件如下:

    globalmd5 = functest
    port = 9900
    address = http://sdv.functest.com

    具体转换和增删改查操作参看如下代码:

    import configparser
    import os
    
    filepath = os.path.join(os.getcwd(),'config.ini')
    print(filepath)
    sectionname = 'temp'
    
    #把普通配置文件转换为有section的文件
    def trans2ini(path,sectionname):
        with open(path,'r') as f:
            f_temp = f.read()
        with open(path,'w') as f:
            f.write('[' + sectionname + ']
    ' + f_temp)
    
    #转换为不带section的配置文件
    def trans2normal(path):
        with open(path,'r') as f:
            f.readline()
            f_temp = f.read()
        with open(path,'w') as f:
            f.write(f_temp)
    
    #查询操作
    def select(filepath,configparser):
        configparser.read(filepath)
        for i in configparser.sections():
            print('[' + i + ']')
            for k,v in configparser.items(i):
                print(k,'=',v)
    
    #修改操作
    def update(fielpath,configparser,section,option,value):
        configparser.read(filepath)
        configparser.set(section,option,value)
        with open(filepath,'w+') as f:
            configparser.write(f)
    
    #删除option操作
    def delete_option(filepath,configparser,section,option):
        configparser.read(filepath)
        configparser.remove_option(section,option)
        with open(filepath,'w+') as f:
            configparser.write(f)
    
    #删除section操作
    def delete_section(filepath,configparser,section):
        configparser.read(filepath)
        configparser.remove_option(section)
        with open(filepath,'w+') as f:
            configparser.write(f)
    
    #增加操作
    def insert(filepath,configparser,section,options,values):
        configparser.read(filepath)
        if section not in configparser.sections():
            configparser.add_section(section)
        for i in range(len(options)):
            configparser.set(section,options[i],values[i])
        with open(filepath,'w+') as f:
            configparser.write(f)
    
    #转换为带section的ini文件
    trans2ini(filepath,sectionname)
    cp = configparser.ConfigParser()
    print('查询原始文件:')
    select(filepath,cp)
    
    print('修改port为8809:')
    update(filepath,cp,sectionname,'port','8809')
    select(filepath,cp)
    
    print('删除port:')
    delete_option(filepath,cp,sectionname,'port')
    select(filepath,cp)
    
    print('增加port:')
    insert(filepath,cp,sectionname,['port'],['8001'])
    select(filepath,cp)
    
    #操作完成后删除section
    trans2normal(filepath)

    以上仅作为参考,有更好思路请留言交流

  • 相关阅读:
    语音转写平台-非实时语音分割
    基于能量或过零率的实时语音分割--学习笔记
    web浏览器录音:web audio api
    python---webRTC~vad静音检测-学习笔记
    python import自己写的.py文件
    许愿墙JQ
    抽奖JQ
    制作时钟
    冒泡排序
    企业面试:作用域和函数提升的面试题
  • 原文地址:https://www.cnblogs.com/watertaro/p/10554450.html
Copyright © 2011-2022 走看看