Python configparser标准库简介

电玩女神 2023-07-17 11:24 145阅读 0赞

如果你要使用Python处理类似ini这种格式的文件,那么肯定离不开configparser标准库,它使用起来很简单而且非常方便。下面就让我们来看看吧。

简单读写

读写ini文件非常简单,来看看下面的例子就明白了。首先要创建ConfigParser的实例,使用它则非常简单,基本上就和处理字典完全一样。处理完毕之后,调用ConfigParser的write方法并传递一个文件就可以将其保存下来了。读取时候更加简单,直接向read方法传递文件名即可。

  1. import configparser
  2. config_filename = 'config.ini'
  3. config = configparser.ConfigParser()
  4. config['default'] = { 'name': '易天', 'age': 30, 'gender': 'male'}
  5. config['young'] = { 'name': 'yitian', 'age': 20}
  6. with open(config_filename, 'w', encoding='utf8')as file:
  7. config.write(file)
  8. config2 = configparser.ConfigParser()
  9. config2.read(config_filename, encoding='utf8')
  10. for section in config2.sections():
  11. print(f'[{section}]')
  12. for key in config2[section]:
  13. print(f'{key} = {config2[section][key]}')
  14. ''' [default] name = 易天 age = 30 gender = male [young] name = yitian age = 20 '''

另外还有几个read函数,用于从其他地方读取配置。

  • read_file,从文件读取配置,参数是一个已经打开的文件
  • read_string,从字符串读取配置,参数是一个配置字符串
  • read_dict,从字典读取配置,参数是一个字典

处理数据类型

所有的数据类型都是字符串类型,如果你需要使用其他数据类型,需要自己手动转换。不过你也可以使用getXXX函数来直接获取某种类型的数据,这样的函数有getint、getfloat、getbooloean,如果你需要的话,还可以自己添加自定义数据类型的处理函数。

  1. print(type(config['default']['age']))
  2. print(type(int(config['default']['age'])))
  3. print(type(config['default'].getint('age')))
  4. ''' <class 'str'> <class 'int'> <class 'int'> '''

默认值和备用值

在获取值的时候,假如没有这个值,我们可以给get参数添加第二个值来获得一个备用值,这种方法对于getint、getfloat、getboolean方法等同样适用。

但是如果配置文件中存在DEFAULT章节,而且默认章节设置了某个值的话,就会用这里的默认值取代备用值,因此在使用的时候大家要注意一下。

字符串插入

配置文件中可以引用其他选项,可以通过在ConfigParser构造函数中传入interpolation参数来进行控制。

  1. c = configparser.ConfigParser(
  2. interpolation=configparser.ExtendedInterpolation())
  3. c.read_string(s)
  4. print(c['young']['age'])

默认的插入是configparser.BasicInterpolation(),可以处理%(value)s格式的选项。这里的第二个age的值会是yitian2.

  1. [DEFAULT]
  2. name = yitian
  3. age = 25
  4. [young]
  5. name = yitian2
  6. age = %(name)s

还有一种是configparser.ExtendedInterpolation(),功能更强,可以引用其他章节的选项。它的格式是${value}。这里的第二个age会是yitian,如果要引用本章节的选项,可以省去section:章节,只保留变量名。

  1. [DEFAULT]
  2. name = yitian
  3. age = 25
  4. [young]
  5. name = yitian2
  6. age = ${DEFAULT:name}

如果不需要任何插入和转换,可以直接将interpolation指定为None,这样ConfigParser就会原样读取字符串。

  1. c = configparser.ConfigParser(interpolation=None)

实用函数

ConfigParser还包含了一些使用函数,在我们处理配置文件的时候非常有用。






































函数名 作用
sections() 返回所有章节组成的列表,不包括默认章节
add_section(section) 添加一个新的章节
has_section(section) 判断该章节是否存在
options(section) 返回该章节下的所有选项列表
has_options(section,option) 判断给定章节下是否存在某选项
remove_options(section,option) 删除给定章节下的某个选项
remove_section(section) 删除某个章节

还有一些函数不太常用,这里我就不介绍了。对于大部分情况,其实上面这些已经足够用了。

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python 标准

    [Python 语言参考手册][Python] 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标准库。它还描述了通常包含在 Pyth

    相关 python ConfigParser模块简介

    在项目中我们为了控制程序,常常需要配置文件。 典型的取0功能关闭,取1功能开启。 也可以实现,对数据的分离,常量我们就存在配置文件,这样修改不会对代码逻辑造成影响,以避免误

    相关 Python标准

    一、正则表达式 (re包) 我将从正则表达式开始讲Python的标准库。正则表达式是文字处理中常用的工具,而且不需要额外的系统知识或经验。我们会把系统相关的包放在后面讲解