我是靠谱客的博主 合适毛巾,最近开发中收集的这篇文章主要介绍Python3: ini 配置文件解析器 ConfigParser1. ConfigParser 解析器2. 解析 ini 配置文件3. 配置保存为 ini 文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

Python3 学习笔记(目录)

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

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

1. ConfigParser 解析器

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

构造方法:

# 解析器的构造方法, 创建一个解析器
class configparser.ConfigParser(defaults=None,
                                dict_type=dict, 
                                allow_no_value=False, 
                                delimiters=('=', ':'), 
                                comment_prefixes=('#', ';'), 
                                inline_comment_prefixes=None, 
                                strict=True, 
                                empty_lines_in_values=True, 
                                default_section=configparser.DEFAULTSECT, 
                                interpolation=BasicInterpolation(), 
                                converters={})

读取方法:

# 读取并解析 ini 格式的配置文件(可以是单个文件/str 或 多个文件组成的文件列表/list)
read(filenames, encoding=None)

# 从 f 读取并解析配置数据, 它必须是一个产生 Unicode 字符串的可迭代对象(例如以文本模式打开的文件)。
read_file(f, source=None)

# 从字符串中解析配置数据
read_string(string, source='<string>')

# 从任意一个提供了类似于字典的 items() 方法的对象加载配置
read_dict(dictionary, source='<dict>')


# 返回可用节的列表(由节的名称组成), 不包括 [DEFAULT] 节, 
# 如: ['section_name1', 'section_name2', ...]
sections()


# 返回由 [DEFAULT] 节的 options 组成的字典
defaults()


# 是否有指定名称的节, 不包括 [DEFAULT] 节
has_section(section)


# 返回指定节名称的可选项列表(由字段名称组成), 包括 [DEFAULT] 中的 options
# 如: ['option_name1', 'option_name2', ...]
# 不存在将抛出 NoSectionError 异常。
options(section)


# 指定节名称的 section 中是否有一个 option 字段
has_option(section, option)


# 返回 section 中的所有 option 的 (name, value) 对组成的列表, 包括 [DEFAULT]
items(section, raw=False, vars=None)


# 获取指定名称的 section 中的一个 option 的值, 返回 str 类型。不存在将抛出 KeyError 异常。
get(section, option, *, raw=False, vars=None[, fallback])

# get() 方法获取的值转换为 int
getint(section, option, *, raw=False, vars=None[, fallback])

# get() 方法获取的值转换为 float
getfloat(section, option, *, raw=False, vars=None[, fallback])

# get() 方法获取的值转换为 bool。
# '1', 'yes', 'true' 和 'on' 将返回 True;
# '0', 'no', 'false' 和 'off' 将返回 False。
getboolean(section, option, *, raw=False, vars=None[, fallback])

写入方法:

# 如果给定的 section 存在,则将所给出的 option 设为指定的 value 值
set(section, option, value)


# 添加名名称为 section 的节, 如果已存在将抛出异常
add_section(section)


# 移除 section 中的 option
remove_option(section, option)


# 移除指定的 section
remove_section(section)


# 将所有配置写入指定的 file object, 该对象必须以文本模式打开。 
write(fileobject, space_around_delimiters=True)

2. 解析 ini 配置文件

一个 ini 配置文件:config.ini

[DEFAULT]
common1 = common default
common2 = 1000

[Hello]
ki = 100
kf = 3.14
ks = hello world
kb1 = yes
kb2 = no
aa.bb = = cc [ dd

[github.com]
User = System
Passwd = 123456

解析 config.ini 配置文件:

import configparser

# 创建配置文件解析器
config = configparser.ConfigParser()

# 读取并解析配置文件
config.read("config.ini")

# [DEFAULT] 节的字典
print(config.defaults())        # {'common1': 'common default', 'common2': '1000'}

# [DEFAULT] 除外的所有节
print(config.sections())        # ['Hello', 'github.com']

# [github.com] 节中的所有 option 的 names, 包括 [DEFAULT]
print(config.options("github.com"))     # ['user', 'passwd', 'common1', 'common2']

# 判断是否有指定名称的节
print(config.has_section("Hello"))      # True
print(config.has_section("hello"))      # False(区分大小写)

# 判断指定 section 中是否存在指定 option
print(config.has_option("github.com", "User"))  # True
print(config.has_option("github.com", "UsEr"))  # True(不区分大小写)

# 获取 option 的值
print(config.get("DEFAULT", "common1"))     # 'common default'
print(config.get("Hello", "common1"))       # 'common default'

print(config["DEFAULT"]["common2"])         # '1000'(可以直接使用索引访问)

print(config.get("Hello", "ki"))            # '100'
print(config.get("Hello", "kf"))            # '3.14'
print(config.get("Hello", "ks"))            # 'hello world 你好 世界'(自动移除首位空格)
print(config.get("Hello", "kb1"))           # 'yes'
print(config.get("Hello", "kb2"))           # 'no'
print(config.get("Hello", "aa.bb"))         # '= cc [ dd'

print(config.get("github.com", "User"))     # 'System'
print(config.get("github.com", "uSeR"))     # 'System'(不区分大小写)

print(config.getint("Hello", "ki"))         # 100
print(config.getfloat("Hello", "kf"))       # 3.14
print(config.getfloat("Hello", "ki"))       # 100.0
print(config.getboolean("Hello", "kb1"))    # True
print(config.getboolean("Hello", "kb2"))    # False

3. 配置保存为 ini 文件

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

import configparser

# 创建配置文件解析器
config = configparser.ConfigParser()

# 读取并解析配置文件
config.read("config.ini")

# 移除 节
config.remove_section("Hello")
# 移除 option
config.remove_option("DEFAULT", "common1")

# 设置 节 的 option 的值
config.set("github.com", "User", "Hello")

# 添加 节
config.add_section("World")
# 设置 节 的 option 的值
config.set("World", "names", "bb")

# 将所有配置写入文件
with open("config2.ini", "wt") as f:
    config.write(f)

查看 config2.ini 文件:

[DEFAULT]
common2 = 1000

[github.com]
user = Hello
passwd = 123456

[World]
names = bb

最后

以上就是合适毛巾为你收集整理的Python3: ini 配置文件解析器 ConfigParser1. ConfigParser 解析器2. 解析 ini 配置文件3. 配置保存为 ini 文件的全部内容,希望文章能够帮你解决Python3: ini 配置文件解析器 ConfigParser1. ConfigParser 解析器2. 解析 ini 配置文件3. 配置保存为 ini 文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(107)

评论列表共有 0 条评论

立即
投稿
返回
顶部