python configparser用法,python config()

  python configparser用法,python config()

  这篇文章主要介绍了pythonconfigparser中默认值的设定方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  

目录

配置解析器中默认值的设定解决方案使用configparser的注意事项注意要点

 

  

configparser中默认值的设定

 

  在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的:

  尝试:

  apple=config.get(第节,“苹果”)

  除了NoSectionError,NoOptionError:

  苹果=无

  但当存在很多配置时,这种写法太糟糕

  幸好,在Configparser.get()函数中有一个变量()的参数,可以自定义;注:只能用ConfigParser .configparserrrawconfigparser是不支持的

  

解决方案

 

  1、定义函数:

  类默认选项(字典):

  def __init__(自身,配置,部分,* *千伏):

  自我. config=config

  自我. section=section

  迪克特. init__(自身,* *千伏)

  定义项目(自身):

  _items=[]

  对于self:中的选项

  如果不是自我. config.has_option(self ._section,选项):

  _items.append((option,self[option]))

  else:

  值_输入_配置=自身. config.get(self ._部分,选项)

  _items.append((选项,值_输入_配置))

  退货_项目

  2、使用

  定义读取配置(区段,位置):

  config=configparserConfigParser()

  配置.读取(位置)

  apple=config.get(部分,苹果,

  vars=DefaultOption(config,section,apple=None))

  pear=config.get(section, pear ,

  vars=DefaultOption(config,section,pear=None))

  banana=config.get(section, banana ,

  vars=DefaultOption(配置,节,香蕉=无))

  归还苹果、梨、香蕉

  这样就很好解决了读取配置文件时没有选择权时自动取默认值,而不是用加注的方式取默认值

  此方案来之栈溢出

  

使用configparser的注意事项

 

  以这个非常简单的典型配置文件为例:

  [默认]

  ServerAliveInterval=45

  压缩=是

  压缩级别=9

  ForwardX11=是

  [bitbucket.org]

  用户=汞

  [topsecret.server.com]

  端口=50022

  ForwardX11=否

  1、配置解析器操作跟词典类似,在数据存取

  方法基本一致

  

>> import configparser

 

  2、默认配置项[DEFAULT]section 的默认参数会作用于其他Sections

  3、数据类型

  

  • config parsers 不会猜测或自动分析识别config.ini参数的数据类型,都会按照字符串类型存储,如果需要读取为其他数据类型,需要自定义转换。

  • 特殊bool值:对于常见的布尔值’yes’/‘no’, ‘on’/‘off’, ‘true’/‘false’ 和 ‘1’/‘0’,提供了getboolean()方法。

 

  4、获取参数值方法 get()

  

  • 使用get()方法获取每一参数项的配置值。

  • 如果一般Sections 中参数在[DEFAULT]中也有设置,则get()到位[DEFAULT]中的参数值。

 

  5、参数分隔符可以使用‘=’或‘:’(默认)

  6、可以使用‘#’或‘;’(默认)添加备注或说明

  

[Simple Values]

 

  7、写配置

  常见做法:

  

config.write(open(example.ini, w))

 

  合理做法:

  

with open(example.ini, w) as configfile:

 

  

 

  

注意要点

 

  1、ConfigParser 在get 时会自动过滤掉‘#’或‘;‘注释的行(内容);

  

  • 一般情况下我们手工会把配置中的暂时不需要的用‘#‘注释,问题在于,Configparser 在wirte的时候同file object行为一致,如果将注释’#‘的配置经过get后,再wirte到conf,那么’#‘的配置就会丢失。

  • 那么就需要一个策略或规则,配置需不需要手工编辑 ?还是建立复杂的对原生文本的处理的东西,我建议是管住手,避免将一些重要的配置爆露给用户编辑,切记行内注释和Section内注释。

  • 有一个相对简单的方法是:

  • 对单独在一行的代码,你可以在读入前把"#", ";"换成其他字符如’@’,或‘^’(在其bat等其他语言中用的注释符易于理解),使用allow_no_value选项,这样注释会被当成配置保存下来,处理后你再把#, ";"换回来。

 

  2、在ConfigParser write之后,配置文本如果有大写字母’PRODUCT’会变为小写字母’product’,并不影响配置的正确读写。

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: