Python之解析 Windows 下的 .ini 文件

在 Python 中解析 Windows 下的 .ini 文件,可以使用内置的 configparser 模块。configparser 专门用于处理 .ini 格式的配置文件,支持分节、键值对、注释等特性。

以下是一个完整的示例,展示如何解析和操作 .ini 文件。

1. .ini 文件示例

假设你有一个名为 config.ini 的文件,内容如下:

[DEFAULT]
sourcepatch = lijiedan
targetpath = /home/user
timeout = 30

[user]
name = Alice
age = 25

[server]
host = 127.0.0.1
port = 8080
2. 使用 configparser 解析 .ini 文件

以下是完整的 Python 代码:

import configparser

 创建 ConfigParser 对象
config = configparser.ConfigParser()

#读取 .ini 文件
config.read('config.ini', encoding='utf-8')

 访问配置变量
 1. 访问 DEFAULT 节的变量
sourcepatch = config['DEFAULT']['sourcepatch']
timeout = config['DEFAULT'].getint('timeout')  # 获取整数

2. 访问 user 节的变量
user_name = config['user']['name']
user_age = config['user'].getint('age')  # 获取整数

3. 访问 server 节的变量
server_host = config['server']['host']
server_port = config['server'].getint('port')  # 获取整数

#打印结果
print("sourcepatch:", sourcepatch)
print("timeout:", timeout)
print("user_name:", user_name)
print("user_age:", user_age)
print("server_host:", server_host)
print("server_port:", server_port)
3. 代码说明

config.read(‘config.ini’):读取 .ini 文件。

config[‘section’][‘key’]:访问指定节(section)中的键(key)的值。

config[‘section’].getint(‘key’):将键的值转换为整数。

DEFAULT 节:DEFAULT 节是一个特殊节,它的变量会被其他节继承。

4. 修改和保存 .ini 文件

你可以修改配置并保存到新的 .ini 文件中。

# 修改配置
config['user']['age'] = '26'  # 修改年龄
config['server']['port'] = '9090'  # 修改端口

# 添加新节和键值对
config['new_section'] = {
    'key1': 'value1',
    'key2': 'value2'
}

# 保存到新文件
with open('config_updated.ini', 'w', encoding='utf-8') as file:
    config.write(file)

生成的 config_updated.ini 文件:

[DEFAULT]
sourcepatch = lijiedan
targetpath = /home/user
timeout = 30

[user]
name = Alice
age = 26

[server]
host = 127.0.0.1
port = 9090

[new_section]
key1 = value1
key2 = value2
5. 其他常用操作
检查节或键是否存在
# 检查节是否存在
if 'user' in config:
    print("user 节存在")

# 检查键是否存在
if 'name' in config['user']:
    print("name 键存在")
获取所有节
sections = config.sections()
print("所有节:", sections)
获取所有键值对
for section in config.sections():
    print(f"[{section}]")
    for key, value in config[section].items():
        print(f"{key} = {value}")
6. 注意事项

.ini 文件中的键值对默认是字符串类型,如果需要其他类型(如整数、布尔值),需要手动转换。

DEFAULT 节的变量会被其他节继承,但不会被 sections() 方法返回。

如果 .ini 文件包含非 ASCII 字符(如中文),需要指定 encoding=‘utf-8’。

你可能感兴趣的:(Python,python,windows,开发语言)