跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 进阶:INI 配置文件读写详解

INI 文件常用于脚本工具的配置管理,其 Key 不区分大小写。通过 Python 的 configparser 模块,可以轻松读取 sections、获取不同数据类型(如 boolean、int)的值。修改配置时使用 set 方法仅影响内存对象,需配合 write 方法才能持久化保存。掌握这些基础操作能有效提升配置管理的效率。

PhpPioneer发布于 2023/4/19更新于 2026/10/2392 浏览
Python 进阶:INI 配置文件读写详解

INI 配置文件基础

INI 文件在脚本和工具程序中非常常见,结构清晰,适合存储简单的键值对配置。需要注意的是,ConfigParser 默认情况下 Key 是不区分大小写的。

示例配置文件

假设我们有一个 test.ini 文件,内容如下:

[installation]
library=%(prefix)s/lib
include=%(prefix)s/include
bin=%(prefix)s/bin
prefix=/usr/local

[debug]
log_errors=true
show_warnings=False

[server]
port=8080
nworkers=32
pid-file=/tmp/spam.pid
root=/www/root
signature=Brought to you by the Python Cookbook

读取与解析

使用 configparser 模块可以方便地处理这类文件。下面是一个完整的读取示例:

from configparser import ConfigParser

cfg = ConfigParser()
cfg.read('test.ini')

# 获取所有分区名称
print(f'sections is: {cfg.sections()}')

# 获取字符串值
print(f'library is: {cfg.get("installation", "library")}')

# 自动转换类型
print(f'log errors: {cfg.getboolean("debug", "log_errors")}')
print(f'port is: {cfg.getint("server", "port")}')
print(f'nworkers is: {cfg.getint("server", "nworkers")}')
print(f'signature is: {cfg.get("server", "signature")}')

运行结果会显示各个分区的名称以及对应的值。这里特别留意一下类型转换方法,比如 getboolean 和 getint,它们能直接返回布尔或整数,省去了手动转换的麻烦。ConfigParser 还会自动处理变量替换,所以 %(prefix)s 会被展开为实际路径。

修改配置

修改配置相对简单,但要注意内存与磁盘的区别。set 方法只修改内存中的对象,不会立即写入文件。

# 修改内存中的值
cfg.set('server', 'port', '9000')
cfg.set('debug', 'log_errors', 'False')

print(f'new debug is: {cfg.getboolean("debug", "log_errors")}')
print(f'After change, port is: {cfg.getint("server", "port")}')

# 注意:如果不调用 cfg.write(),文件本身不会被更新

另外,INI 文件的 Key 不区分大小写这一点在实际使用中很有用。例如:

print(cfg.get('installation', 'PREFIX'))
print(cfg.get('installation', 'prefix'))

无论大写还是小写,都能正确获取到 /usr/local。如果需要在实际项目中持久化修改,记得在修改后打开文件并调用 cfg.write() 将数据写回。

目录

  1. INI 配置文件基础
  2. 示例配置文件
  3. 读取与解析
  4. 获取所有分区名称
  5. 获取字符串值
  6. 自动转换类型
  7. 修改配置
  8. 修改内存中的值
  9. 注意:如果不调用 cfg.write(),文件本身不会被更新

更多推荐文章

查看全部
  • IDEA 插件开发:Swing 图形界面设计指南
  • 人工智能与数据分析的关系及 Python Pandas 快速入门
  • Stable Diffusion 原理详解(附代码实现)
  • CANN 技术栈解析:Python、C++ 及算子开发选型指南
  • 飞牛 NAS 更换网络环境后 IP 无法访问的解决方法
  • Docker Logs 命令:从基础到高级日志管理
  • 算法:位运算详解及常用技巧 (& ^ ~ -n n-1)
  • RISC-V 智能家居中控系统开发实战:硬件、固件与通信全链路
  • 人工智能行业产品经理薪资分析与能力要求
  • C++ 协程深度解析:从内部机制到实用场景
  • 数据结构:二叉树基础概念与堆实现详解
  • Linux 进程间通信:命名管道(FIFO)实战与原理
  • SQLyog 13.1.1 安装步骤与 MySQL 连接配置指南
  • 民用无人机新规 2026 年 5 月实施:实名登记与激活要求详解
  • 基于 Java 的药店药品进销存与在线问诊管理系统设计与实现
  • Golang 后端性能优化手册:高级优化技巧
  • Java JDK 21 安装与环境配置指南
  • IDA Pro MCP:用 AI 驱动逆向分析实战
  • 基于 Z-Image 与 ComfyUI 的国产 AIGC 图像生成生态构建
  • C# 业务异常处理:BusException 类设计与使用

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online