Python3: ini 配置文件解析器 ConfigParser

古城微笑少年丶 2021-09-22 00:26 396阅读 0赞

本文链接: https://xiets.blog.csdn.net/article/details/117579793

Python3 学习笔记(目录)

configparser 配置文件解析器。此模块用于处理类似于 Windows 的 .ini 配置文件。配置文件中有多个节(section),每个节下可以存储多个 name=value 的字段(option)。

Python 官网文档: configparser — 配置文件解析器

1. ConfigParser 解析器

configparser.ConfigParser 类的常用属性和方法:

构造方法:

  1. # 解析器的构造方法, 创建一个解析器
  2. class configparser.ConfigParser(defaults=None,
  3. dict_type=dict,
  4. allow_no_value=False,
  5. delimiters=('=', ':'),
  6. comment_prefixes=('#', ';'),
  7. inline_comment_prefixes=None,
  8. strict=True,
  9. empty_lines_in_values=True,
  10. default_section=configparser.DEFAULTSECT,
  11. interpolation=BasicInterpolation(),
  12. converters={ })

读取方法:

  1. # 读取并解析 ini 格式的配置文件(可以是单个文件/str 或 多个文件组成的文件列表/list)
  2. read(filenames, encoding=None)
  3. # 从 f 读取并解析配置数据, 它必须是一个产生 Unicode 字符串的可迭代对象(例如以文本模式打开的文件)。
  4. read_file(f, source=None)
  5. # 从字符串中解析配置数据
  6. read_string(string, source='<string>')
  7. # 从任意一个提供了类似于字典的 items() 方法的对象加载配置
  8. read_dict(dictionary, source='<dict>')
  9. # 返回可用节的列表(由节的名称组成), 不包括 [DEFAULT] 节,
  10. # 如: ['section_name1', 'section_name2', ...]
  11. sections()
  12. # 返回由 [DEFAULT] 节的 options 组成的字典
  13. defaults()
  14. # 是否有指定名称的节, 不包括 [DEFAULT] 节
  15. has_section(section)
  16. # 返回指定节名称的可选项列表(由字段名称组成), 包括 [DEFAULT] 中的 options
  17. # 如: ['option_name1', 'option_name2', ...]
  18. # 不存在将抛出 NoSectionError 异常。
  19. options(section)
  20. # 指定节名称的 section 中是否有一个 option 字段
  21. has_option(section, option)
  22. # 返回 section 中的所有 option 的 (name, value) 对组成的列表, 包括 [DEFAULT]
  23. items(section, raw=False, vars=None)
  24. # 获取指定名称的 section 中的一个 option 的值, 返回 str 类型。不存在将抛出 KeyError 异常。
  25. get(section, option, *, raw=False, vars=None[, fallback])
  26. # get() 方法获取的值转换为 int
  27. getint(section, option, *, raw=False, vars=None[, fallback])
  28. # get() 方法获取的值转换为 float
  29. getfloat(section, option, *, raw=False, vars=None[, fallback])
  30. # get() 方法获取的值转换为 bool。
  31. # '1', 'yes', 'true' 和 'on' 将返回 True;
  32. # '0', 'no', 'false' 和 'off' 将返回 False。
  33. getboolean(section, option, *, raw=False, vars=None[, fallback])

写入方法:

  1. # 如果给定的 section 存在,则将所给出的 option 设为指定的 value 值
  2. set(section, option, value)
  3. # 添加名名称为 section 的节, 如果已存在将抛出异常
  4. add_section(section)
  5. # 移除 section 中的 option
  6. remove_option(section, option)
  7. # 移除指定的 section
  8. remove_section(section)
  9. # 将所有配置写入指定的 file object, 该对象必须以文本模式打开。
  10. write(fileobject, space_around_delimiters=True)

2. 解析 ini 配置文件

一个 ini 配置文件:config.ini

  1. [DEFAULT]
  2. common1 = common default
  3. common2 = 1000
  4. [Hello]
  5. ki = 100
  6. kf = 3.14
  7. ks = hello world
  8. kb1 = yes
  9. kb2 = no
  10. aa.bb = = cc [ dd
  11. [github.com]
  12. User = System
  13. Passwd = 123456

解析 config.ini 配置文件:

  1. import configparser
  2. # 创建配置文件解析器
  3. config = configparser.ConfigParser()
  4. # 读取并解析配置文件
  5. config.read("config.ini")
  6. # [DEFAULT] 节的字典
  7. print(config.defaults()) # {'common1': 'common default', 'common2': '1000'}
  8. # [DEFAULT] 除外的所有节
  9. print(config.sections()) # ['Hello', 'github.com']
  10. # [github.com] 节中的所有 option 的 names, 包括 [DEFAULT]
  11. print(config.options("github.com")) # ['user', 'passwd', 'common1', 'common2']
  12. # 判断是否有指定名称的节
  13. print(config.has_section("Hello")) # True
  14. print(config.has_section("hello")) # False(区分大小写)
  15. # 判断指定 section 中是否存在指定 option
  16. print(config.has_option("github.com", "User")) # True
  17. print(config.has_option("github.com", "UsEr")) # True(不区分大小写)
  18. # 获取 option 的值
  19. print(config.get("DEFAULT", "common1")) # 'common default'
  20. print(config.get("Hello", "common1")) # 'common default'
  21. print(config["DEFAULT"]["common2"]) # '1000'(可以直接使用索引访问)
  22. print(config.get("Hello", "ki")) # '100'
  23. print(config.get("Hello", "kf")) # '3.14'
  24. print(config.get("Hello", "ks")) # 'hello world 你好 世界'(自动移除首位空格)
  25. print(config.get("Hello", "kb1")) # 'yes'
  26. print(config.get("Hello", "kb2")) # 'no'
  27. print(config.get("Hello", "aa.bb")) # '= cc [ dd'
  28. print(config.get("github.com", "User")) # 'System'
  29. print(config.get("github.com", "uSeR")) # 'System'(不区分大小写)
  30. print(config.getint("Hello", "ki")) # 100
  31. print(config.getfloat("Hello", "kf")) # 3.14
  32. print(config.getfloat("Hello", "ki")) # 100.0
  33. print(config.getboolean("Hello", "kb1")) # True
  34. print(config.getboolean("Hello", "kb2")) # False

3. 配置保存为 ini 文件

沿用前面示例的 config.ini 文件:

  1. import configparser
  2. # 创建配置文件解析器
  3. config = configparser.ConfigParser()
  4. # 读取并解析配置文件
  5. config.read("config.ini")
  6. # 移除 节
  7. config.remove_section("Hello")
  8. # 移除 option
  9. config.remove_option("DEFAULT", "common1")
  10. # 设置 节 的 option 的值
  11. config.set("github.com", "User", "Hello")
  12. # 添加 节
  13. config.add_section("World")
  14. # 设置 节 的 option 的值
  15. config.set("World", "names", "bb")
  16. # 将所有配置写入文件
  17. with open("config2.ini", "wt") as f:
  18. config.write(f)

查看 config2.ini 文件:

  1. [DEFAULT]
  2. common2 = 1000
  3. [github.com]
  4. user = Hello
  5. passwd = 123456
  6. [World]
  7. names = bb

发表评论

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

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

相关阅读