在 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
异常。这就是函数调用被 try
和 except
块包围的原因。
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()
函数需要三个参数,即 section
、option
和 value
。这意味着将在 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()
方法接受两个参数:section
和 option
。
它会在部分
下找到选项
。get()
方法在指定部分下找不到指定选项时会抛出 NoOptionError
异常。
因此,为了避免任何运行时异常,get()
方法调用和 print()
语句都包含在 try...except
块中。