在 Python 中读写 INI 文件

Vaibhav Vaibhav 2022年5月17日
在 Python 中读写 INI 文件

INI 文件是计算机软件的配置文件。

它包含表示属性及其值的键值对。这些键值对按部分组织。

INI 文件的扩展名为 .ini。Microsoft Windows 和基于 Microsoft Windows 的应用程序使用 INI 文件,该软件使用 INI 文件来存储其配置。

Python 是一种强大且通用的编程语言,可以构建桌面应用程序。由于桌面应用程序包括基于 Microsoft Windows 的应用程序和软件,Python 开发人员应该使用 INI 文件来存储配置并在必要时读取它们。

本文将教授如何使用 Python 读写 INI 文件。

用 Python 读写 INI 文件

要读取和写入 INI 文件,我们可以使用 configparser 模块。该模块是 Python 标准库的一部分,用于管理 Microsoft Windows 中的 INI 文件。

这个模块有一个类 ConfigParser 包含所有的实用程序来玩 INI 文件。我们可以将此模块用于我们的用例。

让我们通过一个简单的例子来了解这个库的用法。请参阅以下 Python 代码。

import configparser

filename = "file.ini"

# Writing Data
config = configparser.ConfigParser()
config.read(filename)

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

with open(filename, "w") as config_file:
    config.write(config_file)

# Reading Data
config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

输出:

time: utc
time_format: 24h
language: english
testing: false
production: true

Python 代码说明

Python 脚本首先创建一个 ConfigParser 类的对象并读取 filename 指定的 INI 文件。如果指定路径中不存在该文件,则不会有任何问题。

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

接下来,它尝试使用 add_section() 方法在 INI 文件中创建一个 SETTINGS 部分。

当部分已存在于 INI 文件中时,add_section() 方法会引发 configparser.DuplicateSectionError 异常。这就是函数调用被 tryexcept 块包围的原因。

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

接下来,使用 set() 函数,我们将数据写入 INI 文件。

set() 函数需要三个参数,即 sectionoptionvalue。这意味着将在 section 下添加一个键值对,其中键是 option,值是 value

上面的 Python 脚本添加了 5 个这样的对。

with open(filename, "w") as config_file:
    config.write(config_file)

接下来,打开 INI 文件,使用 configparser 库的 write() 方法将数据写入其中,最后保存。

config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

Python 脚本再次读取 INI 文件以读取 INI 文件的内容,并使用 get() 方法检索所有写入的信息。get() 方法接受两个参数:sectionoption

它会在部分下找到选项get() 方法在指定部分下找不到指定选项时会抛出 NoOptionError 异常。

因此,为了避免任何运行时异常,get() 方法调用和 print() 语句都包含在 try...except 块中。

作者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

相关文章 - Python File