Python中你不知道的配置文件写法

本文介绍了Python中常见的配置文件格式,包括ini、json、toml和yaml,讲解了它们的特点、使用场景以及如何在Python中进行解析。ini文件简单易懂,适合初学者;json格式广泛应用于数据交换,但不支持注释;toml扩展了ini,支持更多数据类型;yaml则是一种流行的配置文件,尤其在Docker等领域广泛应用,但其规范较复杂,使用时需注意安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

时间过得真快呀!一晃眼新的一天又开始了。今天给大家分享什么呢,思考了很久之后,决定给大家分享一个关于Python中配置文件的写

法。我猜肯定还是有很多小伙伴对于配置文件不是很清楚的,接下来看我表演…

为什么要写配置文件

在开发过程中,我们常常会用到一些固定参数或者是常量。对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不

同的模块代码中重复出现从而保持核心代码整洁。

这个固定文件我们可以直接写成一个 .py 文件,例如 settings.py 或 config.py,这样的好处就是能够在同一工程下直接通过 import 来导入当

中的部分;但如果我们需要在其他非 Python 的平台进行配置文件共享时,写成单个 .py 就不是一个很好的选择。这时我们就应该选择通用

的配置文件类型来作为存储这些固定的部分。目前常用且流行的配置文件格式类型主要有 ini、json、toml、yaml、xml 等,这些类型的配置

文件我们都可以通过标准库或第三方库来进行解析。
在这里插入图片描述

ini

ini 即 Initialize 初始化之意,早期是在 Windows 上配置文件的存储格式。ini 文件的写法通俗易懂,往往比较简单,通常由节(Section)、

键(key)和值(value)组成,就像以下形式:

Python学习交流Q群:906715085###
[localdb]
host     = 127.0.0.1
user     = root
password = 123456
port     = 3306
database = mysql

Python 本身内置的 configparser 标准库,我们直接就可以用来对 ini 文件进行解析。如我们将上述内容保存在一个名为 db.ini 的文件中,然

后使用 read() 方法来进行解析和读取,最后通过 items() 方法来获取指定节点下的所有键值对。

>>> from configparser import ConfigParser
>>> cfg = ConfigParser()
>>> cfg.read("/Users/Bobot/db.ini")
['/Users/Bobot/db.ini']
>>> cfg.items("localdb")
[('host', '127.0.0.1'), ('user', 'root'), ('password', '123456'), ('port', '3306'), ('database', 'mysql')]

需要注意的是,configparser 默认将值以字符串的形式呈现,所以这也就是为什么我们在 db.ini 文件中没有加引号而是直接将字面量写在上

面的原因。

获取到键值对后,我其实直接就将其转换成字典,然后通过解包的方式进行穿参,保持代码简洁:

#!pip install pymysql
import pymysql
from configparser import ConfigParser

cfg = ConfigParser
### 编 `config.py` 的最佳实践 #### 使用字典存储配置项 一种常见的做法是利用Python内置的数据结构——字典来保存配置参数。这种方式简单直观,易于维护。 ```python CONFIG = { "db": { "host": 'localhost', "port": 3306, "user": 'root', "password": 'jiang', "database": 'an' } } ``` 此方法适用于小型应用或测试环境,在实际生产环境中可能需要更复杂的解决方案[^3]。 #### 利用类封装配置信息 对于较大规模的应用程序来说,可以创建一个专门用于管理设置的类。这仅有助于提高代码可读性和组织性,而且便于后续扩展功能。 ```python class Config(object): DEBUG = False class DatabaseConfig: HOST = 'localhost' PORT = 3306 USER = 'root' PASSWORD = 'jiang' DATABASE = 'an' # 访问方式如下所示: print(Config.DatabaseConfig.HOST) ``` 通过定义静态属性的方式使得访问更加方便快捷的同时也保持了一定程度上的灵活性[^1]. #### 导入外部文件作为配置源 当涉及到敏感数据如数据库密码时,应将其硬编码到版本控制系统中去;而是应该考虑从其他地方加载这些值,比如环境变量或是单独存放于本地磁盘而受Git跟踪影响的秘密文件内。 ```python import os basedir = os.path.abspath(os.path.dirname(__file__)) SQLALCHEMY_DATABASE_URI = f'mysql+pymysql://{os.getenv("DB_USER")}:{os.getenv("DB_PASS")}@{os.getenv("DB_HOST")}/{os.getenv("DB_NAME")}' SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess' ``` 这种方法能够有效保护隐私并增强安全性[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值