常用配置文件及读取方法

在 Python 程序中,配置文件的常用格式有 .ini.yaml.json.toml,这些文件格式各有优缺点,适合不同的场景。下面逐一介绍这些格式及相应的读取库和优点:

1. .ini 文件

  • :Python 标准库 configparser
  • 结构.ini 文件使用键值对的结构,并支持使用不同的段(sections)来组织数据,例如 [section_name]
  • 优点
    • 简单直观,适合存储简单的配置信息。
    • 支持分区的分层结构,便于逻辑上的划分。
    • Python 标准库自带 configparser,无需额外安装第三方库。

适用场景.ini 文件适合简单、层级较少的配置信息,适合小型应用程序的基本配置需求。

示例

[database]
host = localhost
port = 3306
user = root
password = example

读取方式

import configparser

config = configparser.ConfigParser()
config.read('config.ini')
host = config['database']['host']

2. .yaml 文件

  • PyYAML
  • 结构.yaml 支持更复杂的结构,包括字典、列表、嵌套等,可以表示多层次的配置。
  • 优点
    • 语法简洁,可读性好,适合存储结构化的数据。
    • 支持复杂的嵌套和列表,非常灵活。
    • 通常用于配置需求较复杂的项目,如微服务配置、CI/CD 配置等。

适用场景.yaml 常用于需要表达复杂数据结构的配置文件,例如包含多层次、多字段的配置需求。

示例

database:
  host: localhost
  port: 3306
  user: root
  password: example

读取方式

import yaml

with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)
host = config['database']['host']

3. .json 文件

  • :Python 标准库 json
  • 结构:JSON 格式采用键值对的结构,并支持嵌套的字典和列表,结构相对清晰。
  • 优点
    • 广泛应用于 Web 应用和 API 配置,兼容性好。
    • 使用 Python 标准库 json,无需额外依赖。
    • 解析速度快,适合数据量较大的配置文件。

适用场景.json 常用于 Web 应用或接口配置,特别是需要与其他系统交互时。

示例

{
  "database": {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "example"
  }
}

读取方式

import json

with open('config.json', 'r') as f:
    config = json.load(f)
host = config['database']['host']

4. .toml 文件

  • toml(Python 官方推荐库)但从python3.11开始,已经内置库(tomllib)支持了。
  • 结构.toml 文件类似于 .ini 文件,支持多级嵌套和数组,格式上更现代。
  • 优点
    • 语法简洁易读,专门用于配置文件,非常适合用来表达多层次结构的数据。
    • 多数情况下比 .yaml.json 更清晰,尤其适合项目依赖或小型应用配置。
    • 已成为 Python 的官方推荐配置文件格式,尤其在 Python 项目依赖管理(如 Poetry)中广泛应用。

适用场景.toml 文件特别适合 Python 应用程序的配置需求,尤其是在结构不复杂时更具优势。

示例

[database]
host = "localhost"
port = 3306
user = "root"
password = "example"

读取方式

import toml

config = toml.load('config.toml')
host = config['database']['host']

python3.11内置库读取:

import tomllib

with open("config.toml", "rb") as f:
    config = tomllib.load(f)
    # 获取excel文件路径
    EXCEL_FILEPATH = config['EXCEL_FILEPATH']
    BANK_STATEMENT_SHEET = config['BANK_STATEMENT_SHEET']
    CUSTOMER_INFO_SHEET = config['CUSTOMER_INFO_SHEET']
    AGING_REPORT_SHEET = config['AGING_REPORT_SHEET']
    INVOICE_DATA_SHEET = config['INVOICE_DATA_SHEET']
    LOG_LEVEL = config['LOG_LEVEL']

各格式对比总结

格式 优点 缺点 推荐场景
.ini 简单直观,支持分区,标准库支持 结构简单,不支持复杂嵌套 小型应用的简单配置
.yaml 语法简洁,支持复杂结构 需要安装第三方库,解析速度略慢 需要嵌套或多层次结构的复杂配置
.json 兼容性好,解析速度快,标准库支持 可读性不如 YAML,缺少注释支持 Web 配置或需要跨系统传输的应用
.toml 简洁现代,适合多级嵌套,官方推荐 支持度不如 JSON 和 YAML Python 应用程序和依赖管理配置

根据项目需求选择合适的格式,能更好地管理和读取配置文件。

posted @ 2024-11-08 20:30  RolandHe  阅读(28)  评论(0编辑  收藏  举报