Python configparser模块ini配置文件读写详解

阿澈
阿澈
发布时间:2026-10-15| 3人浏览过
原创

本文详细介绍Python中如何使用configparser模块进行ini配置文件的读写操作。涵盖导入模块、创建与写入配置、读取现有文件、修改及保存配置等核心步骤,并附带ini文件格式说明及模块帮助信息,帮助开发者快速掌握配置文件的处理方法。

在Python中处理ini配置文件,首先需要导入内置的configparser模块。该模块提供了处理配置文件的类和方法,是进行配置读写操作的基础。

import configparser # py3

写入配置文件时,首先实例化ConfigParser对象。可以通过字典形式为DEFAULT部分设置默认值,例如ServerAliveInterval、Compression和CompressionLevel。接着,可以为特定段(如bitbucket.org)添加用户信息。对于其他段(如topsecret.server.com),可以直接通过对象属性赋值的方式添加主机端口和ForwardX11选项。注意,修改默认段的ForwardX11值会影响所有未明确指定该选项的段。最后,使用open函数以写入模式打开文件,并调用config.write()方法将配置写入文件。

config = configparser.ConfigParser()

config["DEFAULT"] = {
    'ServerAliveInterval': '45',
    'Compression': 'yes',
    'CompressionLevel': '9'
    }

config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'

config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'  # mutates the parser
topsecret['ForwardX11'] = 'no'  # same here

config['DEFAULT']['ForwardX11'] = 'yes'

# 写入文件
with open('example.ini', 'w') as configfile:
    config.write(configfile)

读取配置文件时,同样实例化ConfigParser对象并调用read()方法指定文件路径。可以通过defaults()方法获取默认配置,通过sections()方法获取所有段名。访问特定段的特定选项,可以直接使用类似字典的索引操作,例如config['bitbucket.org']['User']。使用options()方法可以获取指定段的所有选项名,items()方法则返回该段所有选项及其值的列表。get()方法用于获取指定段中特定选项的值,例如获取topsecret.server.com段的port值。

config = configparser.ConfigParser()
config.read("example.ini")

print(config.defaults())
# OrderedDict([('compression', 'yes')])

print(config.sections())
# ['bitbucket.org', 'topsecret.server.com']

print(config['bitbucket.org']['User'])
# hg

print(config.options("topsecret.server.com"))
# ['port', 'compression']

print(config.items("topsecret.server.com"))
# [('compression', 'yes'), ('port', '50022')]

print(config.get("topsecret.server.com", "port"))
# 50022

修改配置文件涉及检查、删除、添加和设置选项等操作。可以使用has_section()方法检查段是否存在。使用remove_section()方法删除整个段,使用add_section()方法添加新段。在段中添加选项,可以直接通过字典赋值方式,例如config["Name"]["name"] = "Tom"。使用remove_option()方法删除特定选项,使用set()方法设置或更新选项值。最后,通过open函数以写入模式打开文件,并调用config.write()方法保存修改后的配置。

print(config.has_section("Name"))

# 删除
config.remove_section("Name")

# 添加
config.add_section("Name")
config["Name"]["name"] = "Tom"
config["Name"]["asname"] = "Jimi"

# 设置
config.remove_option("Name", "asname")
config.set("Name", "name", "Jack")

# 保存
config.write(open("example.ini", "w"))

ini文件是一种简单的配置文件格式,通常包含段(Section)、选项(Option)和值(Value)。段名用方括号括起来,选项和值用等号分隔。DEFAULT段用于存储默认值,其他段可以继承这些默认值。例如,示例中的ini文件包含DEFAULT、bitbucket.org和topsecret.server.com三个部分,每个部分下有若干选项和对应的值。

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = hg

[topsecret.server.com]
host port = 50022
forwardx11 = no

通过help(configparser)可以查看configparser模块的帮助文档,了解其类、方法及属性的详细信息。这有助于深入理解模块的功能和使用方式。

"""
CLASSES

    class ConfigParser(RawConfigParser)
     |  ConfigParser implementing interpolation.
     |  
     |  add_section(self, section)
     |      Create a new section in the configuration.  Extends
     |      RawConfigParser.add_section by validating if the section name is
     |      a string.
     |  
     |  set(self, section, option, value=None)
     |      Set an option.  Extends RawConfigParser.set by validating type and
     |      interpolation syntax on the value.
     |  
     |  defaults(self)
     |  
     |  get(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>)
     |      Get an option value for a given section.
     |  
     |  getboolean(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>)
     |  
     |  getfloat(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>)
     |  
     |  getint(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>)
     |  
     |  has_option(self, section, option)
     |      Check for the existence of a given option in a given section.
     |      If the specified `section' is None or an empty string, DEFAULT is
     |      assumed. If the specified `section' does not exist, returns False.
     |  
     |  has_section(self, section)
     |      Indicate whether the named section is present in the configuration.

     |  items(self, section=<object object at 0x0000000002F42120>, raw=False, vars=None)
     |      Return a list of (name, value) tuples for each option in a section.
     |  
     |  options(self, section)
     |      Return a list of option names for the given section name.
     |  popitem(self)
     |      Remove a section from the parser and return it as
     |  read(self, filenames, encoding=None)
     |      Read and parse a filename or a list of filenames.
     |      Return list of successfully read files.
     |  
     |  read_dict(self, dictionary, source='<dict>')
     |      Read configuration from a dictionary.
     |  
     |  read_file(self, f, source=None)
     |      Like read() but the argument must be a file-like object.
     |      
     |  read_string(self, string, source='<string>')
     |      Read configuration from a given string.
     |  
     |  readfp(self, fp, filename=None)
     |      Deprecated, use read_file instead.
     |  
     |  remove_option(self, section, option)
     |      Remove an option.
     |  
     |  remove_section(self, section)
     |      Remove a file section.
     |  
     |  sections(self)
     |      Return a list of section names, excluding [DEFAULT]
     |  
     |  write(self, fp, space_around_delimiters=True)
     |      Write an .ini-format representation of the configuration state.
     |  
     |  clear(self)
     |      D.clear() -> None.  Remove all items from D.
     |  
     |  pop(self, key, default=<object object at 0x0000000002F42040>)
     |      D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
     |      If key is not found, d is returned if given, otherwise KeyError is raised.
     |  
     |  setdefault(self, key, default=None)
     |      D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
     |  
     |  update(*args, **kwds)
     |      D.update([E, ]**F) -> None.  Update D from mapping/iterable E and F.
     |      If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
     |      If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
     |      In either case, this is followed by: for k, v in F.items(): D[k] = v
     |  
     |  keys(self)
     |      D.keys() -> a set-like object providing a view on D's keys
     |  
     |  values(self)
     |      D.values() -> an object providing a view on D's values
     |  
"""

至此,关于Python中ini配置文件读写的实现介绍完毕。更多相关Python ini文件读写内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。