python2 configparser,python ConfigParser
配置文件对于配置当前软件服务至关重要。
从软件的影响和作用来看,大致可以分为两类。
结构配置
这可能不是配置,因为它是程序本身的一部分。它对项目的影响是巨大的。
如spring中的注入,调节了各种程序逻辑的搭配。
这样的配置有很多,决定了程序的功能逻辑,严格来说是代码的一部分。
只需在程序中限制代码逻辑,通过这种配置调整代码流程,加快开发速度。
参数配置
一般来说配置就是这种参数配置。
它不改变程序的逻辑,只是为程序提供原材料或限制,方便适应不同的使用场景。
配置文件有很多种,常见的后缀:ini、conf、properties大多都是配置文件。
其实只要能表达清楚,配置文件可以是任何文件,也可以是非文本。
但是,所有配置文件都需要“配对”。过程中需要注入哪些原料?合格参数?
为了清楚地表明注入数据的位置和功能,配置总是以键值对的形式出现。属性文件很明显。
为了更具体地示出配置的功能,将区分它所作用的功能模块。比如python的ConfigParser。
当然,如果想做更多层次的区分,可以使用xml或者custom。能认出来就好。
在解析器中,只对键值对进行一层块区分。
ConfigParser的最外层是ConfigParser对象,它由多个Section块组成。
这是ConfigParser中的配置块,功能或范围一致的配置信息可以通过Section来标识。
不过还是要看个人习惯。分块随机与否都没问题。主要是获取键值对的配置信息。
通过块区分,也可以区分相同的选项名,比如名称空间。
但至少知道信息在哪里。
Option是单个键值对,属性名=属性值,很容易区分。
完整的配置文件如图所示
read from config parser import config parser # construct configuration object config=config parser()# load configuration file config . read( config . conf )# get configuration block name sections=config . sections()# print for sections in sections:print(section)加载配置
config.read(config.conf)
首先加载配置文件
读取顺序
在读取配置时,请注意第节,然后才能获得选项。
ConfigParser对象相当于一个二维字典,外层是section,内层是option,所以在操作上可以提供很大的便利。
获取section
#节中节的遍历打印:打印(节)
获取option
#遍历打印节中的节:print(section)for option in config[section]:print( \ t option)
获取配置值
#遍历打印节中的节:print(section)for option in config[section]:#获取值print( \ t option = config . Get(section,option))
作为两层字典,也可以这么玩。
#遍历打印config中的节:print(section)for option in config[section]:print( \ t option = config[section][option])写入添加section。
从configparser导入config parser def show sections(config):for section in config . sections():print(section)print( * * 10)# Construct object config=config parser()config . read( config . conf )show sections(config)# Add a new block config . Add _ section( new _ section )show sections(config)
设置option
def showOption(config,Section):for option in config[Section]:print(option)print(= * 10)# Construct config object config=config parser()config . read( config . conf )# Add a new block config . Add _ Section( new _ section )show option(config, new _ Section )config . set( new _ Section , new _ option , option _ value )show option(config, new _ Section )注意:当节不存在时,直接
保存当新建或者修改以后,配置并不会直接保存到文件中,需要操作一下。
config=config parser()config。清除()配置。add _ section(“first”)配置。设置(第一,第二,第三)配置。写(打开(配置。conf , w ,编码=utf-8 ))注意:
每次写会覆盖指定的文件读写模式和编码需要注意可以清除干净,但是避免少用,可能导致数据无法恢复综合从configparser导入ConfigParser类Config(object):def _ _ init _ _(self,filename=None):self。Config=Config parser()self。filename=filename if self。文件名:self。load Config()def加载配置(self):self。配置。阅读(自我。文件名)自我。constructor()def constructor(self):for self。配置。章节()中的sectionObj=Config .self . config[节]中选项的base():选项值=self.config。get(section,option) setattr(sectionObj,option,optionValue) setattr(self,section,section obj)def get sections(self):返回self。配置。sections()def get options(self,section):ret self。def get(self,section,option):ret Config。get(section,option)定义集(self,section,option,value):如果不是自我。配置中的版块:自我。配置。add _ section(sec base()setattr(section obj,option,value) setattr(self,section,section obj)self。配置。set(区段,选项,值)def save(self,filename=None): file=filename或自我。文件名如果文件:自我。配置。写(打开(文件, w ,编码=utf-8 )引发异常(未指定保存文件名)@静态方法基类(object):passif _ _ name _ _== _ _ main _ _ :Config=Config()Config。设置( a , b , c )打印(配置a.b)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。