zoukankan      html  css  js  c++  java
  • Python内置模块之configparse

    一、概述

    1.1、处理的文件形式

    configparse 主要是用来处理类似于windows的 ini文件,这个文件的特点是有多个节(section),每个节下会存储多个k=v的值

    如下配置

    [hardware]
    cpu = 2
    [os]
    os = CentOS
    os_version = 6.9
    kernel_version = 2.6.32
    [common]
    selinux = disabled
    file_descriptor = 65535
    [nginx]
    version = 1.6.3
    install_path = /tuike/server/nginx
    config_file =['/middleWare/nginx/centralapi.conf','/middleWare/nginx/wezhuanba1.conf']

    1.2、相关方法

    • config.write()   将配置写入文件,括号里是文件的句柄

    二:实践

    2.1、生成配置文件

    import  configparser
    config = configparser.ConfigParser() # 得到一个对象
    config["hardware"] = {'cpu':'2'} # 增加一个hardware节,节内的内容使用字典数据格式表示
    config["os"] = {'os':'CentOS','os_version':'6.9','kernel_version':'2.6.32'}
    config['common'] = {'selinux':'disabled',
                          'file_descriptor':'65535'
                        }
    config['nginx'] = {'version':'1.6.3',
                       'install_path':'/tuike/server/nginx',
                       'config_file':['/middleWare/nginx/centralapi.conf','/middleWare/nginx/wezhuanba1.conf']
                       }
    with open('test','w',encoding='utf-8') as f:
        config.write(f)

    2.2、各种操作

    import configparser
    config =  configparser.ConfigParser()  # 拿到一个配置对象
    
    ############## sections 操作
    # 判断sections是否再配置文件里
    print('os' in config)  # section in  配置对象
    print('wangys' in config)
    
    # 查看sections
    print(config.sections())   # 直接看sections,因为没有读取配置文件,所以会返回一个空列表
    # []
    config.read('test.ini',encoding='utf-8') # 读取配置文件,注意编码
    print(config.sections()) # 再次打印sections,可以看到有结果
    # ['hardware', 'os', 'common', 'nginx']
    
    # 增加一个section
    config.add_section('wangys')
    print(config.sections())
    # ['hardware', 'os', 'common', 'nginx', 'wangys']
    
    # 删除一个section
    config.remove_section('wangys')
    print(config.sections())
    # ['hardware', 'os', 'common', 'nginx']
    
    
    ##### 操作k/v
    # 查看某个节里的内容
    # 使用 for 循环去key
    # 判断某个key是否再selections里
    
    
    
    
    for key in config['os']:
        print(key)
    
    # options查看selctions下配置的key
    print(config.options('nginx'))
    
    # 查看你k v 值  返回一个列表,没有k/v组成一个元祖
    print(config.items('nginx'))
    # [('version', '1.6.3'), ('install_path', '/tuike/server/nginx'), ('config_file', "['/middleWare/nginx/centralapi.conf', '/middleWare/nginx/wezhuanba1.conf']")]
    # 获取某个节下的某个key的value值
    print(config.get('os','os_version'))
    # print(config['os']['os_version','kernel_version'])
    
    # 读取某个sections下的所有的k/v值
    l = config.options('nginx')
    for key in l:
        print('%s:%s'%(key,config.get('nginx',key)))
    
    # 删除一个sections下的key
    
    config.remove_option('os','kernel_version')
    print(config.options('os'))
    #['os', 'os_version']
    
    # 增加一个option
    config.set('os','name','王诚')
    print(config.options('os'))
    print(config.get('os','name'))
    # ['os', 'os_version', 'name']
    # 王永胜
    
    with open('test.ini','w',encoding='utf-8') as f:
        config.write(f)
  • 相关阅读:
    iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别
    iOS- AVSpeechSynthesizer——iOS7语音合成器
    iOS- 利用AFNetworking(AFN)
    iOS- 利用AFNetworking(AFN)
    iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
    iOS- 多线程技术的概述及优点
    150. Best Time to Buy and Sell Stock II【medium】
    213. String Compression【easy】
    495. Implement Stack【easy】
    547. Intersection of Two Arrays【easy】
  • 原文地址:https://www.cnblogs.com/wc89/p/10414856.html
Copyright © 2011-2022 走看看