一文带你梳理Python中七种配置文件的常见用法

 更新时间:2025年09月01日 08:18:40   作者:跟橙姐学代码  
在写 Python 项目的时候,最让人头大的环节之一,就是配置文件,本文将带大家一起深入了解下Python中七种配置文件的常见用法,感兴趣的可以了解下

在写 Python 项目的时候,最让人头大的环节之一,就是配置文件

你肯定遇到过:

  • 模型训练路径要配置;
  • API Key 要配置;
  • 数据库连接参数要配置;
  • 生产环境、测试环境的参数还得区分……

结果就是:项目写着写着,光是管理配置文件就快把人逼疯。

更扎心的是,不同的项目,配置文件格式还五花八门——有人用 .ini,有人用 .json,有人推崇 .yaml,还有 .toml.env.xml,甚至直接用 .py 文件来写。

那么问题来了:到底该用哪种?它们有什么区别?在 Python 里怎么读写?

别急,这篇文章我会把 7 种常见的配置方式一次性说清楚,代码实战全给你备好,照着用就行。

一、为什么配置文件这么重要

在项目开发里,配置文件就像“遥控器”。 你不可能把所有参数写死在代码里吧? 那样一旦换服务器、换数据库、换模型路径,改动起来简直要命。

有了配置文件,就像把遥控器交给你:

  • 想改参数,直接改配置,不用动核心代码;
  • 想区分测试环境和生产环境?复制两份配置文件就行;
  • 想分享项目?把敏感信息放进 .env,别人拿到项目后只要改一改配置,就能跑起来。

所以,配置文件的格式选择,其实决定了你的项目可维护性和扩展性

二、常见配置格式横向对比

咱们先来个总览,心里有数:

格式可读性复杂度安全性类型支持适用场景
INI基础类型简单分组配置
JSON丰富跨语言、数据交换
YAML丰富复杂配置,带注释
XML丰富企业级规范
.env字符串环境变量、敏感信息
TOML丰富Python 项目常用
Python 文件完全支持框架级、动态配置

一张表看下来,基本思路就出来了:

  • 简单粗暴用 INI
  • 要跨语言、交换数据用 JSON
  • 想要人类友好 + 注释能力强,就上 YAML
  • 如果你是企业项目、偏 Java 系,可能用 XML
  • 需要管理敏感信息, .env 几乎是标配;
  • TOML 是 Python 项目的新宠,兼顾简洁和结构;
  • 框架配置动不动就是 .py 文件(比如 Django),那是特殊情况。

下面我们就一一拆解,看它们在 Python 里怎么用。

三、七种方式逐个过

1. INI 文件 —— 老牌选手

INI 文件最大的优点就是:简单、直观、Python 原生支持。 标准库里有 configparser,拿来就用。

import configparser

def handle_ini_file():
    # 写INI文件
    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['Port'] = '50022'
    topsecret['ForwardX11'] = 'no'

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

    # 读取INI文件
    config_read = configparser.ConfigParser()
    config_read.read('myconfig.ini')

    print("INI文件内容:")
    print(f"ServerAliveInterval: {config_read['DEFAULT']['ServerAliveInterval']}")
    print(f"bitbucket User: {config_read.get('bitbucket.org', 'User')}")
    print(f"Port: {config_read.getint('topsecret.server.com', 'Port')}")
    print(f"ForwardX11: {config_read.getboolean('topsecret.server.com', 'ForwardX11')}")

适合场景:配置比较简单,不需要嵌套。

2. JSON 文件 —— 跨语言通吃

几乎所有语言都支持 JSON,这就是它的杀手锏。 Python 里用 json 模块,一行搞定。

import json

def handle_json_file():
    data = {
        "name": "John",
        "age": 30,
        "city": "New York",
        "is_student": False,
        "hobbies": ["reading", "gaming", "hiking"],
        "address": {
            "street": "123 Main St",
            "zipcode": "10001"
        }
    }

    # 写JSON
    with open('myconfig.json', 'w') as f:
        json.dump(data, f, indent=4)

    # 读JSON
    with open('myconfig.json', 'r') as f:
        data_read = json.load(f)

    print("JSON文件内容:")
    print(f"Name: {data_read['name']}")
    print(f"Age: {data_read['age']}")
    print(f"Hobbies: {', '.join(data_read['hobbies'])}")
    print(f"Zipcode: {data_read['address']['zipcode']}")

适合场景:需要和别的语言/程序交互的数据交换。

3. YAML 文件 —— 人类最友好的配置

YAML 近几年在 Python 圈特别火,优点就是:简洁,还能写注释! 不过要装 pyyaml,标准库没带。

import yaml

def handle_yaml_file():
    data = {
        "name": "Alice",
        "age": 25,
        "city": "London",
        "is_student": True,
        "hobbies": ["painting", "dancing"],
        "address": {
            "street": "456 Oak Ave",
            "zipcode": "SW1A 1AA"
        }
    }

    # 写YAML
    with open('myconfig.yaml', 'w') as f:
        yaml.dump(data, f, sort_keys=False)

    # 读YAML
    with open('myconfig.yaml', 'r') as f:
        data_read = yaml.safe_load(f)

    print("YAML文件内容:")
    print(f"Name: {data_read['name']}")
    print(f"Age: {data_read['age']}")
    print(f"Hobbies: {', '.join(data_read['hobbies'])}")
    print(f"Zipcode: {data_read['address']['zipcode']}")

适合场景:复杂项目,需要手动编辑、加注释。

4. TOML 文件 —— Python 官方推荐

TOML 是近年来火起来的,它的设计初衷就是做配置。 Python 官方文档里推荐用它。

import toml

# 写入TOML
data = {
    "title": "TOML config",
    "owner": {
        "name": "Tom Preston-Werner",
        "dob": "1979-05-27T07:32:00-08:00"
    },
    "database": {
        "server": "192.168.1.1",
        "ports": [8001, 8001, 8002]
    }
}

with open("config.toml", "w") as f:
    toml.dump(data, f)

# 读取TOML
with open("config.toml", "r") as f:
    config = toml.load(f)

print('toml配置信息:', config["database"]["server"])

适合场景:现代 Python 项目,结构化又简洁。

5. XML 文件 —— 老派企业最爱

XML 在 Java 生态里非常常见,Python 里用得少,主要是写法太啰嗦。

import xml.etree.ElementTree as ET

# 写XML
root = ET.Element("config")
server = ET.SubElement(root, "server")
ET.SubElement(server, "host").text = "localhost"
ET.SubElement(server, "port").text = "8080"

tree = ET.ElementTree(root)
tree.write("config.xml")

# 读XML
tree = ET.parse("config.xml")
root = tree.getroot()
host = root.find("server/host").text
port = root.find("server/port").text
print(host)
print('端口', port)

适合场景:企业级规范,或者要和 Java 系统打交道时。

6. 环境变量(.env 文件)—— 敏感信息守护者

密码、API Key、数据库 URL 这些东西,最适合放 .env。 配合 python-dotenv,特别方便。

from dotenv import load_dotenv
import os

# 加载.env
load_dotenv()

# 读取环境变量
api_key = os.getenv("API_KEY")
database_url = os.getenv("DATABASE_URL")

print('apikey:', api_key)
print('Url:', database_url)

适合场景:存储敏感配置,环境变量管理。

7. Python 文件 —— 直接上本尊

有些框架直接用 .py 做配置(Django 就是)。 灵活性最高,但也意味着安全性和维护性要小心。

# settings.py
DEBUG = True
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase'
    }
}

适合场景:框架内部、动态计算配置。

四、怎么选

一句话总结:

  • 快速小项目:INI
  • 要交换数据:JSON
  • 人类友好:YAML
  • Python 新项目:TOML
  • 敏感信息:.env
  • 企业/老系统:XML
  • 框架内置:.py

大多数情况下,YAML + TOML + .env 足够覆盖绝大多数 Python 项目需求。

五、最后的话

别小看配置文件,它决定了你的项目是不是“优雅”。 如果配置乱七八糟,项目就会越来越臃肿,哪怕代码写得再漂亮,也会被坑到。

所以,学会正确地管理配置,其实就是在给未来的自己减负。

到此这篇关于一文带你梳理Python中七种配置文件的常见用法的文章就介绍到这了,更多相关Python配置文件用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Django中修改js css文件但浏览器无法及时与之改变的问题

    解决Django中修改js css文件但浏览器无法及时与之改变的问题

    今天小编就为大家分享一篇解决Django中修改js css文件但浏览器无法及时与之改变的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python竟能画这么漂亮的花,帅呆了(代码分享)

    Python竟能画这么漂亮的花,帅呆了(代码分享)

    这篇文章主要介绍了用Python作图的一个简单实例,通过turtle模块实现作图,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • python opencv 找出图像中的最大轮廓并填充(生成mask)

    python opencv 找出图像中的最大轮廓并填充(生成mask)

    这篇文章主要介绍了python opencv 找出图像中的最大轮廓并填充(生成mask),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python基于Tkinter实现的记事本实例

    Python基于Tkinter实现的记事本实例

    这篇文章主要介绍了Python基于Tkinter实现的记事本,实例分析了Tkinter实现记事本程序的相关技巧,需要的朋友可以参考下
    2015-06-06
  • python web 开发之Flask中间件与请求处理钩子的最佳实践

    python web 开发之Flask中间件与请求处理钩子的最佳实践

    Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如身份验证、日志记录、数据预处理等功能,本文将详细介绍Flask的请求处理钩子、g对象以及中间件模式的使用方法和最佳实践,感兴趣的朋友一起看看吧
    2025-05-05
  • python定时关机小脚本

    python定时关机小脚本

    这篇文章主要为大家详细介绍了python定时关机小脚本,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python读写txt文件的多种方法

    Python读写txt文件的多种方法

    文本文件(.txt)是最基础、最通用的数据存储格式之一,广泛应用于日志记录、配置文件、数据交换等场景,本文将详细介绍Python中读写txt文件的各种方法,包括基础操作和高级技巧,需要的朋友可以参考下
    2026-05-05
  • Python元组的嵌套使用与多层元组的访问与遍历指南

    Python元组的嵌套使用与多层元组的访问与遍历指南

    在Python的世界里,元组(Tuple)是一种简单却强大的数据结构,它以其不可变性和轻量级特性,成为许多场景下的首选如何优雅地处理嵌套元组?如何高效访问和遍历多层嵌套的元组?这些问题困扰着许多初学者,本文将深入探讨元组的嵌套使用技巧,需要的朋友可以参考下
    2026-05-05
  • python魔法方法-属性访问控制详解

    python魔法方法-属性访问控制详解

    下面小编就为大家带来一篇python魔法方法-属性访问控制详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 简单介绍使用Python解析并修改XML文档的方法

    简单介绍使用Python解析并修改XML文档的方法

    这篇文章主要介绍了使用Python解析并修改XML文档的方法,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10

最新评论