Python笔记 - TOML配置文件

TOML(Tom’s Obvious, Minimal Language)是一种配置文件格式,旨在比JSON、YAML等格式更易读、更人性化。它使用简洁的语法,能清晰地表达复杂的结构,同时保留良好的可读性。本文将介绍TOML的基本语法,提供代码示例,并探讨其在Python项目中的使用场景。

TOML 的基本语法

1. 基础键值对

TOML 文件的基础单元是键值对,格式为 key = "value"。键名通常是字母和数字的组合,可以包含下划线。

# 基础键值对
title = "TOML Example"
author = "Tom Preston-Werner"

2. 数组

TOML 支持数组,用方括号 [] 表示。

# 数组示例
fruits = ["apple", "banana", "cherry"]

3. 表格

表格用于组织相关的键值对,使用方括号表示表格名。

# 表格示例
[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]
connection_max = 5000
enabled = true

4. 嵌套表格

表格可以嵌套,用点号分隔各层级。

# 嵌套表格示例
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z  # 日期时间格式[database.settings]
retries = 3
timeout = 30

在Python中使用TOML

读取TOML文件

Python 中可以使用 toml 库来读取和写入 TOML 文件。首先需要安装该库:

pip install toml

然后,可以通过以下代码读取 TOML 文件:

import toml# 读取 TOML 文件
config = toml.load("config.toml")# 访问配置内容
print(config["database"]["server"])  # 输出:192.168.1.1

写入TOML文件

我们也可以使用 toml 库将数据写入 TOML 文件:

# 修改配置内容
config["database"]["timeout"] = 60# 写入 TOML 文件
with open("config_updated.toml", "w") as config_file:toml.dump(config, config_file)

结合实际场景:配置文件

假设我们有一个应用程序,需要从配置文件中读取数据库连接信息和其他设置。我们可以使用 TOML 文件来存储这些配置信息:

config.toml
[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]
connection_max = 5000
timeout = 30[application]
name = "MyApp"
version = "1.0.0"
main.py
import tomldef load_config(filename):return toml.load(filename)def main():config = load_config("config.toml")db_server = config["database"]["server"]db_ports = config["database"]["ports"]app_name = config["application"]["name"]print(f"Connecting to database at {db_server} on ports {db_ports}")print(f"Starting application {app_name}")if __name__ == "__main__":main()

项目管理工具:Python项目中的pyproject.toml

在Python项目中,pyproject.toml 文件可以用来管理项目配置,例如依赖管理和构建工具配置。以下是一个 pyproject.toml 示例:

[tool.poetry]
name = "example-project"
version = "0.1.0"
description = "An example Python project"
authors = ["John Doe <john.doe@example.com>"][tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

结论

TOML 作为一种简洁且易读的配置文件格式,提供了比 JSON 和 YAML 更好的可读性和可维护性。无论是作为应用程序的配置文件,还是用于项目管理和数据序列化,TOML 都是一个极好的选择。通过本文的介绍和示例,你应该能够轻松上手并在你的Python项目中使用 TOML。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【UE5|水文章】在UMG上显示帧率

参考视频&#xff1a; https://www.youtube.com/watch?vH_NdvImlI68 蓝图&#xff1a;

数值分析笔记(二)函数插值

函数插值 已知函数 f ( x ) f(x) f(x)在区间[a,b]上n1个互异节点 { x i } i 0 n \{{x_i}\}_{i0}^{n} {xi​}i0n​处的函数值 { y i } i 0 n \{{y_i}\}_{i0}^{n} {yi​}i0n​&#xff0c;若函数集合 Φ \Phi Φ中函数 ϕ ( x ) \phi(x) ϕ(x)满足条件 ϕ ( x i ) y i ( i …

Apollo9.0 PNC源码学习之Routing模块

路由:Routing模块根据请求生成导航信息 输入: 地图数据请求,包括:开始和结束位置输出: 路由导航信息 Routing navigation information0 前言 文件结构: modules/routing/ ├── BUILD ├── common ├── conf ├── core ├── cyberfile.xml ├── dag ├── …

数据结构01 栈及其相关问题讲解【C++实现】

栈是一种线性数据结构&#xff0c;栈的特征是数据的插入和删除只能通过一端来实现&#xff0c;这一端称为“栈顶”&#xff0c;相应的另一端称为“栈底”。 栈及其特点 用一个简单的例子来说&#xff0c;栈就像一个放乒乓球的圆筒&#xff0c;底部是封住的&#xff0c;如果你想…

2024年了,苹果可以通话录音了

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 6月11日凌晨&#xff0c;苹果在WWDC24大会上&#xff0c;密集输出了酝酿多时的AI应用更新。苹果对通话、对话、图…

每日一题44:合作过至少三次的演员和导演

一、每日一题 ---------------------- | Column Name | Type | ---------------------- | actor_id | int | | director_id | int | | timestamp | int | ---------------------- timestamp 是这张表的主键(具有唯一值的列).编写解决方案找出合作过至少三…

力扣 SQL题目

185.部门工资前三高的所有员工 公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。 编写解决方案&#xff0c;找出每个部门中 收入高的员工 。 以 任意顺序 返回结果表。 返回结果格式如下所示。 …

Android studio如何导入项目

打开解压好的安装包 找到build.gradle文件 打开查看gradle版本 下载对应的gradle版本Index of /gradle/&#xff08;镜像网站&#xff09; 下载all的对应压缩包 配置gradle的环境变量 新建GRADLE_HOME 将GRADLE_HOME加入到path中 将项目在Android studio中打开进行配置 将gr…

LM339模块电路故障查询

最近的电路测试中出现一个问题&#xff0c;如果不接液晶屏&#xff0c;LM339输入端是高电平&#xff0c;如果接了液晶屏&#xff0c;输入端就是低电平&#xff0c;即使在输入端加了上拉电阻&#xff0c;还是如前面的结论&#xff0c;如果越过LM339,直接和后级电路连接&#xff…

Python爬虫JS逆向进阶课程

这门课程是Python爬虫JS逆向进阶课程&#xff0c;将教授学员如何使用Python爬虫技术和JS逆向技术获取网站数据。学习者将学习如何分析网站的JS代码&#xff0c;破解反爬虫机制&#xff0c;以及如何使用Selenium和PhantomJS等工具进行模拟登录和数据抓取。课程结合实例演练和项目…

ThinkPHP邮件发送配置教程?怎么配置群发?

ThinkPHP邮件发送安全性如何保障&#xff1f;ThinkPHP如何实现&#xff1f; 无论是用户注册后的验证邮件&#xff0c;还是订单处理的通知邮件&#xff0c;都需要一个可靠的邮件发送机制。AokSend将详细介绍如何在ThinkPHP框架中配置邮件发送功能&#xff0c;并带您逐步了解其中…

C#面:C#支持多重继承么?

C#不支持多重继承。在C#中&#xff0c;一个类只能直接继承自一个基类。这是由于C#的设计目标之一是避免多重继承可能带来的复杂性和潜在的问题。 然而&#xff0c;C#提供了接口&#xff08;interface&#xff09;的概念来实现类似多重继承的功能。一个类可以实现多个接口&…

Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六)

Python武器库开发-武器库篇之Mongodb未授权漏洞扫描器(五十六) MongoDB 未授权访问漏洞简介以及危害 MongoDB是一款非常受欢迎的开源NoSQL数据库&#xff0c;广泛应用于各种Web应用和移动应用中。然而&#xff0c;由于默认配置的不当或者管理员的疏忽&#xff0c;导致不少Mon…

维度建模中的事实表设计原则

维度建模是一种数据仓库设计方法&#xff0c;其核心是围绕业务过程建立事实表和维度表。事实表主要存储与业务过程相关的度量数据&#xff0c;而维度表则描述这些度量数据的属性。 以下是设计事实表时需要遵循的几个重要原则&#xff0c;来源于《维度建模》那本书上&#xff0…

Dictionary 字典

文章目录 一、什么是字典1.1 字典的创建方式 一、什么是字典 字典&#xff1a; 用来存储数据&#xff0c;与列表和元组不一样的是&#xff0c;字典以键值对的形式对数据进行存储&#xff0c;也就是 key 和 value。相当于 Java 中的 Map。 注意&#xff1a; 1、 key 的值不可重…

[C++][数据结构][AVL树]详细讲解

目录 1.AVL树的概念2.AVL树节点的定义3. AVL树的插入4.AVL树的旋转1.新节点插入较高左子树的左侧 -- 左左&#xff1a;右单旋2.新节点插入较高右子树的右侧 -- 右右&#xff1a;左单旋3.新节点插入较高左子树的右侧 -- 左右&#xff1a;先左单旋再右单旋4.新节点插入较高右子树…

基于System-Verilog点亮LED灯

文章目录 一、System-Verilog介绍1.1System-Verilog 二、简单的语法介绍2.1接口实例2.2全局声明和语句实例2.3时间单位和精度2.4用户定义的类型2.5 枚举类型 三、流水灯参考 一、System-Verilog介绍 1.1System-Verilog SystemVerilog是一种硬件描述和验证语言&#xff08;HDV…

书生·浦语大模型实战营第二期作业五

1、开发机创建conda环境&#xff1a; 2、安装第三方库&#xff1a; 3、新建pipeline_transformer.py文件&#xff0c;并运行&#xff1a; 4、运行结果&#xff1a; 5、执行模型&#xff1a; 6、与大模型进行对话&#xff1a; 7、默认占有的显存&#xff1a; 8、--cache-max-en…

一些常用的git指令总结

1、git add 文件名 &#xff1a;该 命令可将该文件的修改添加到暂存区 比如&#xff1a;我刚刚修改了my_test.cpp文件&#xff0c;这时就可以使用git add my_test.cpp. 就将该修改添加到了暂存区。 2、git commit -m "......说明" 就是将当前的修改记录提交到本地…

git删除已创建tag标签

前言 一不小心把tag标签名称复制错了&#xff0c;现将删除 1.删除本地标签 1.1.执行下面命令 git tag -d 1.5.2401161.5.240116是创建的tag标签名称 2.如果是删除远程的tag标签名称的话&#xff0c;看下面命令 2.1.删除远程标签 git push --delete origin <tagname>…