configparser python3,python的config方法
简介ConfigParser模块修改为python3中的configparser。该模块定义了一个ConfigParser类,用于通过配置文件生效,配置文件的格式与windows INI文件的格式相同。
该模块的作用是在模块中使用RawConfigParser()、ConfigParser()和SafeConfigParser()创建一个对象,并使用该对象的方法来添加、删除和检查指定的配置文件。
配置文件具有不同的片段组成,类似于Linux中repo文件的格式:
格式:
[section] name=value或name: value# 和;批注[DEFAULT] #设置默认变量值,初始化[my section]foodir:% (dir) s/whatever dir=froblong:此值继续下一行%(dir)s将被frob替换。默认值将以字典的形式传递给ConfigParser的构造函数。节一般存储在内置目录中。如果切换到另一个目录,则需要指定存储位置。
方法使用以下三种方式时,切记要注意。
在调用这三个函数时,请记住这三个函数将调用optionxform(),该函数在传递键值对数据时会将所有键名转换为小写。
RawConfigParser()config parser . RawConfigParser([defaults[,dict _ type [,allow _ no _ value]])默认值:如果指定了默认值,则使用默认的键值对dict _ type:使用新的节键值对allow _ no _ value:默认值为False,如果为True,则意味着可以收到空值(None)返回:对象不支持变量参数,节中不能存在%()s。
配置解析器()配置解析器。配置解析器([defaults [,dict _ type [,allow _ no _ value]])的默认值中必须有%()s
SafeConfigParser () ConfigParser。SafeConfigParser ([defaults [,dict _ type [,allow _ no _ value]])更加智能,会自动判断区段中是否存在%()s。
使用函数optionxform()传递参数,foo %(bar)s和foo %(BAR)s是相同的,optionxform()会将所有大写字母转换为小写字母。
常见异常描述ConfigParser。ConfigParser指定的部分出错。未找到所有异常的基类NoSectionError。当调用add_section()时,节名已经被使用。Configparser。使用ConfigParser.NoOptionError指定的参数找不到插值错误。当执行字符串插值时出现问题,基类ConfigParser。插值DeptherError无法完成,因为迭代次数超过了最大范围。InterpolationError是Interpolation MissingOptioneError的子类。当引用的选项不存在时,会出现异常。InterpolationError的子类configparser。interpolationsyntax错误,当替换的源文本不符合所需的语法时,将生成异常。InterpolationError的子类。配置分析器。MissingSectionHeaderError当试图分析没有节头的文件时,将发生异常。ConfigParser。ParsingError当尝试解析文件时出现错误时,会出现异常config parser . max _ interpolation _ depth。当raw参数为false时,get()的递归插值的最大深度。只适用于ConfigParser类的RawConfigParser对象的操作可以分为两类,一类是对配置文件的操作,另一类是读取后对数据流的操作。
对配置文件的操作读取配置文件
方法描述读取(文件名)文件名是一个列表。需要从文件中加载初始值的应用程序应该在调用read()之前使用readfp()加载所需的文件或文件。Readfp(fp[,filename])在fp中,从文件或文件类对象中读取并解析配置数据(仅使用readline()方法)。如果省略文件名,fp有name属性,则用于文件名;默认值是?写配置文件
Description write(fileobject)方法将配置的表示形式写入指定的文件对象。这种表示可以通过将来的read()调用来解决。对内存中数据流的操作会增加配置文件中的值。
描述add_section(section)向实例添加一个节,以删除配置文件中的值。
描述remove_option(section,option)从指定的节中删除指定的选项。如果此部分不存在,请提出NoSectionError。如果删除了现有选项,则返回True否则,返回False。Remove_section(section)从配置中删除指定节。如果此部件确实存在,则返回True。否则,返回错误修改配置文件中的值。
描述集(部分、选项、值)如果给定零件存在,将给定选项设置为指定值optionxform(选项)也可以在实例上重置它。对于需要字符串参数的函数。例如,将其设置为str将使选项名称区分大小写,以便在配置文件中查找值。
description defaults()方法返回包含实例范围默认值的字典。Sections()返回可用节的列表;默认节不包括在列表中has_section(section)指示指定的节是否出现在配置中。的默认部分未确认。options(section)返回指定部分中可用选项的列表。Has_option(section,option)如果给定节存在且包含给定选项,则返回True否则,将返回Falseget(section,option)以获取指定节的选项值。Getint(section,option)它将指定部分中的选项转换为整数getfloat(section,option)它将指定部分中的选项转换为浮点getboolean(section,option)转换为boolean,“1”、“yes”、“true”和“on”,转换为True,“0”、“no“0”、“no”、“false”和“off”,转换为Falseo Other返回值Error.items(section)返回给定部分中每个选项的(name,value)对列表。方法描述导入配置解析器,osconfig=config parser . config parser()config . readfp(open( defaults . CFG ))config . read([ site . CFG ,OS . path . expand user( ~/. myapp . CFG )))CFG parser=config parser().cfgparser . option xform=strconfigparser对象SafeConfigParser包含与configparser相同的方法,还包含一些其他方法。
Description Get (section,option [,raw [,vars]])获取指定节的选项值。如果提供了vars,它必须是一个字典。在vars(如果提供)、segmentation和default value以及items(section[,raw[,vars]])中搜索此选项,返回给定部分中每个选项的(name,value)对列表。除非原始参数为真,否则返回值中的所有“%”插值都是展开的。插值键的值与选项相同。
SafeConfigParser对象集(部分,选项,值)
如果给定部分存在,则将给定选项设置为指定值;否则,引发NoSectionError。该值必须是字符串(字符串或unicode);否则,将会出现类型错误。
实例实例一:写配置文件导入配置分析器配置=配置分析器.RawConfigParser()#添加节或项时,按照与#您希望它们在实际文件中显示的方式相反的顺序添加它们。#此外,请注意,使用RawConfigParser的和ConfigParser各自的设置函数的原始#模式,您可以在内部将#非字符串值赋给键,但是当尝试写入文件或在非原始#模式下获取文件时,将会收到错误#。SafeConfigParser不允许进行此类赋值. config。add _ section( section 1 )配置。 set( section 1 , an_int , 15)config.set(Section1 , a_bool , true)config.set(Section1 , a_float , 3.1415)config.set(Section1 , baz , fun)config.set(Section1 , bar , Python)config.set(Section1 , foo , %(bar)s is %(baz)s!)#使用打开( example.cfg , wb )将我们的配置文件作为配置文件:config。写入(配置文件)写入example.cfg 实例二:读配置文件导入配置分析器配置=配置分析器.RawConfigParser()配置。阅读(例。CFG )# get float()在值不是漂浮物时引发异常# getint()和getboolean()也为它们各自的类型执行此操作a _ float=配置。get float( section 1 , a _ float )an _ int=config。getint( section 1 , an_int )打印一个_float an_int#注意,下一个输出不插入" "(条形)s "或"(巴兹)s " .#这是因为我们使用了RawConfigParser().if config.getboolean(Section1 , a _ bool ):打印配置。get( section 1 , foo )实例三:获取插入值导入配置分析器配置=配置分析器.配置分析器()配置。阅读(例。CFG )#如果您希望使用原始模式,请将得到的第三个可选参数设置为1。打印配置。get( section 1 , foo ,0) # - Python很有趣!print config.get(Section1 , foo ,1) # - %(bar)s is %(baz)s!#可选的第四个参数是一个迪克特,其成员将优先于#插值。打印配置。get( section 1 , foo ,0,{bar: Documentation , baz: evil})实例四:默认值所有三种类型的配置分析器都可以使用默认值。如果在其他地方没有定义一个选项,那么它们就被用于插值
导入配置解析器#新实例,其中“酒吧”和“巴兹”默认为“生活”和“硬”每个config=config解析器.SafeConfigParser({bar: Life , baz : hard })config。阅读(例。CFG’)打印配置。get( section 1 , foo) # - Python很好玩!config.remove_option(Section1 , bar )。remove _ option( section 1 , baz)print config.get(Section1 , foo) # -生活是艰难的!实例五:在各部分之间移动选项def opt_move(config,section1,section2,option):try:config。set(第2节,选项,config.get(第1节,选项,ConfigParser除外NoSectionError: #创建不存在的节配置。add _ section(section2)opt _ move(config,section1,section 2,option)else:configremove _ option(第1节,选项)实例六:配置文件中有空值一些配置文件包含了没有值的设置,但是它与ConfigParser支持的语法相一致。对构造函数的不允许值参数可以被用来表示应该接受这样的值
导入配置解析器导入io sample _ config= .[mysqld].用户=mysql.PID-file=/var/run/mysqld/mysqld。PID.跳过外部锁定.旧密码=1.跳过地热与温泉.跳过-innodb .config=ConfigParser .RawConfigParser(allow _ no _ value=True)配置。readfp(io .BytesIO(sample_config)) #有值的设置像以前一样处理:config.get(mysqld , user ) MySQL )#没有值的设置提供None: config.get(mysqld , skip-bdb) #未指定的设置仍会引发错误:config.get(mysqld ,不存在)Traceback(最近一次调用最后):ConfigParser .NoOptionError:节中没有选项"不存在":" mysqld "
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。