当前位置: 首页 > news >正文

Python配置文件格式——INI、JSON、YAML、XML、TOML

文章目录

  • 对比
  • INI
  • JSON
  • YAML
  • XML
  • TOML
  • 参考文献

对比

格式优点缺点是否支持注释
INI简单易懂
语言内置支持
不支持复杂数据结构
JSON支持复杂数据结构阅读起来不够直观×
YAML简洁有序
支持复杂数据结构
灵活但有歧义
不同实现有兼容性问题
XML支持复杂数据结构和命名空间语法冗长体积较大
TOML语法简洁
支持复杂数据结构
相对较新




INI

键值分隔符为 =:

注释符为 #;

缺乏统一的标准,不能表示复杂数据结构,常用于 Windows 程序

config.ini

[Simple Values]
key=value
spaces in keys=allowed
spaces in values=allowed as well
spaces around the delimiter = obviously
you can also use : to delimit keys from values[All Values Are Strings]
values like this: 1000000
or this: 3.14159265359
are they treated as numbers? : no
integers, floats and booleans are held as: strings
can use the API to get converted values directly: true[Multiline Values]
chorus: I'm a lumberjack, and I'm okayI sleep all night and I work all day[No Values]
key_without_value
empty string value here =[You can use comments]
# like this
; or this# By default only in an empty line.
# Inline comments can be harmful because they prevent users
# from using the delimiting characters as parts of values.
# That being said, this can be customized.[Sections Can Be Indented]can_values_be_as_well = Truedoes_that_mean_anything_special = Falsepurpose = formatting for readabilitymultiline_values = arehandled just fine aslong as they are indenteddeeper than the first lineof a value# Did I mention we can indent comments, too?
import configparserconfig = configparser.ConfigParser(allow_no_value=True)
config.read('config.ini', encoding='utf-8')for section in config.sections():print(section)for key, value in config.items(section):print('  {} = {}'.format(key, value))

特殊字符如 % 会报错 configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%xxxx'

可以用 %% 或者 config.get('MYSQL', 'PASSWORD', raw=True)




JSON

常用于 JavaScript、Python、Node.js、Ruby

config.json

{"mysql": {"host": "127.0.0.1","user": "root","password": "123456","port": 3306,"database": "mysql"}
}
import jsonconfig = json.load(open('config.json'))
print(config)




YAML

YAML 官网

注释符为 #

常用于 Python、Java、Go 等

config.yaml

language: python
mysql:host: localhostport: 3306username: userpassword: secretfields:- id- name- age

安装

pip install PyYAML
import yamlconfig = yaml.safe_load(open('config.yaml', 'r', encoding='utf-8'))
print(config)




XML

注释符为 <!-- 结合 -->

常用于 Java、C#、.NET、Scala 等

<config><database><host>localhost</host><port>3306</port><username>user</username><password>secret</password></database>
</config>
import xml.etree.ElementTree as ETtree = ET.parse('config.xml')
root = tree.getroot()
config = {}
for child in root:config[child.tag] = {subchild.tag: subchild.text for subchild in child}
print(config)




TOML

注释符为 #

常用于 Python、Rust、Go 等

config.toml

# This is a TOML documenttitle = "TOML Example"[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }[servers][servers.alpha]
ip = "10.0.0.1"
role = "frontend"[servers.beta]
ip = "10.0.0.2"
role = "backend"

Python 3.11 标准库开始有 tomllib

import tomllibconfig = tomllib.load(open('config.toml', 'rb'))
print(config)

其余版本使用 toml

pip install toml
import tomlconfig = toml.load(open('config.toml', 'r'))
print(config)




参考文献

  1. configparser — Python 文档
  2. json — Python 文档
  3. PyYAML Documentation
  4. xml.etree.ElementTree — Python 文档
  5. tomllib — Python 文档
  6. 常见配置文件格式
  7. 给力!Python配置文件,这一篇就够了!

相关文章:

Python配置文件格式——INI、JSON、YAML、XML、TOML

文章目录 对比INIJSONYAMLXMLTOML参考文献 对比 格式优点缺点是否支持注释INI简单易懂语言内置支持不支持复杂数据结构✓JSON支持复杂数据结构阅读起来不够直观YAML简洁有序支持复杂数据结构灵活但有歧义不同实现有兼容性问题✓XML支持复杂数据结构和命名空间语法冗长体积较大…...

The First项目报告:Web3人生模拟器,DegenReborn带你重开币圈

2023年6月14日&#xff0c;ReadON APP的首页上&#xff0c;一篇引人注目的文章《黑客马拉松奖&#xff1a;‘Degenreborn’——Meme与GameFi的梦幻交汇》跃然眼前&#xff0c;该文章巧妙融合了NFT、GameFi及Ethereum等热门话题&#xff0c;为读者带来了一场科技与娱乐的盛宴。 …...

燃气经营企业从业人员考试真题及答案

燃气经营企业从业人员考试真题及答案 11.《城镇燃气设计规范》中规定&#xff1a;当穿过卫生间、阁楼或壁柜时&#xff0c;燃气管道应采用&#xff08;&#xff09;连接(金属软管不得有接头)&#xff0c;并应设在钢套管内。 A.法兰 B.软管 C.焊接 D.丝扣 答案&#xff1a…...

白骑士的Matlab教学进阶篇 2.1 数据可视化

系列目录 上一篇&#xff1a;白骑士的Matlab教学基础篇 1.5 数据输入与输出 数据可视化是MATLAB的一个强大功能&#xff0c;它能够将数据以图形的形式展示出来&#xff0c;便于理解和分析。本文将介绍MATLAB中的基本绘图函数、绘制2D图形、绘制3D图形以及高级图形属性与定制的…...

2024年8月 | 涉及侵权、抄袭洗稿违规行为公示

为护社区良好氛围&#xff0c;守护清朗网络空间&#xff0c;CSDN持续对侵害他人权益、抄袭洗稿违规内容进行治理。 今年7月&#xff0c;CSDN共计删除涉及抄袭洗稿内容xx篇&#xff0c;下架侵权资源xx个&#xff0c;封禁违规账号42个。 部分违规账号公示 账号昵称处置结果封禁创…...

操作系统快速入门(四)

&#x1f600;前言 本篇博文是关于操作系统的&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&…...

前缀异或优化

前言&#xff1a;这个题目其实就是考察前缀和&#xff0c;正常情况下开二维数组来记录&#xff0c;但是也可以优化成一位的位运算 我们顺便可以学习一下如何进行查询二进制串中1的个数 class Solution { public:vector<bool> canMakePaliQueries(string s, vector<vec…...

AI学习指南深度学习篇-卷积神经网络中的正则化和优化

AI学习指南深度学习篇-卷积神经网络中的正则化和优化 在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是一类非常重要的模型&#xff0c;被广泛应用于图像识别、目标检测等任务中。然而&#xff0c;在训练CNN时…...

AutoGen Studio 本地源码构建

目录 一、环境配置 1.1 创建本地环境 1.2 下载 autogen 源码 1.3 安装依赖 2. 构建 3. 运行 本文主要介绍 AutoGen Studio 本地源码构建过程。 一、环境配置 1.1 创建本地环境 通过 conda 创建一个环境,Python 3.10+,Node.js 14.15.0+。 conda create -n autogen p…...

医疗陪诊系统源码详解:在线问诊APP开发的技术要点

如今&#xff0c;开发一款高效、可靠的在线问诊APP则成为了许多企业的目标。本篇文章&#xff0c;小编将详细解析医疗陪诊系统的源码&#xff0c;并探讨在线问诊APP开发的关键技术要点。 一、医疗陪诊系统的基本功能 在开始开发之前&#xff0c;首先需要明确医疗陪诊系统的基本…...

VSCode编译多个不同文件夹下的C++文件

实际上VSCode编译C文件就是通过向g传递参数实现的&#xff0c;因此即使是不同包下面的cpp文件或者.h文件都是可以通过修改g的编译参数实现&#xff0c;而在VSCode中&#xff0c;task.json文件其实就是在配置g的编译参数&#xff0c;因此我们可以通过修改task.json里面的参数&am…...

【安卓】连接真机和使用通知

文章目录 连接到真机使用通知通知的简单使用通知的详细信息 连接到真机 先用USB线将手机与电脑连接。 打开手机的设置&#xff0c;找到关于手机&#xff0c;点开之后&#xff0c;找到开发者选项界面。或者找到软件版本号&#xff0c;连续点击&#xff0c;系统会提示你点击几次能…...

CSS3下拉菜单实现

导航菜单&#xff1a; <nav class"multi_drop_menu"><!-- 一级开始 --><ul><li><a href"#">Power</a></li><li><a href"#">Money</a></li><li><a href"#"…...

Mysql8.3.0排序导致分页数据错乱

#业务场景 生产环境 仓库管理&#xff0c;能看到各个仓库的C库位 物料管理&#xff0c;编辑物料&#xff0c;弹框时选择库位时&#xff0c;7页数据&#xff0c;没有C库位&#xff0c;查询条件指定C&#xff0c;能查到数据 本地环境 数据还原到本地 弹框数据在2页与第3页看…...

漏洞复现-Cacti命令执行漏洞 (CVE-2022-46169)

1.漏洞描述 Cacti是一套基于PHP&#xff0c;MySQL&#xff0c;SNMP及RRDTool开发的网络流量监测图形分析工具&#xff0c;可为用户提供强大且可扩展的操作监控和故障管理框架。 该漏洞存在于remote_agent.php文件中&#xff0c;未经身份验证的恶意攻击者可以通过设置HTTP_变量…...

【Ajax使用说明】Ajax、Axios以及跨域

目录 一、原生Ajax 1.1 Ajax简介 1.2 XML简介 1.3 AJAX 的特点 1.3.1 AJAX的优点 1.3.2 AJAX 的缺点 1.4 AJAX 的使用 1.4.1AJAX的基本操作 1.4.2AJAX的传参 1.4.3 AJAX的post请求及设置请求体 1.4.4 AJAX响应json数据 1.4.5 AJAX请求超时与网络异常处理 1.4.5 AJ…...

IIS网站搬家工具WebDeploy(把网站迁移去另一台服务器)

如果不能克隆镜像&#xff0c;又想快速迁移&#xff0c;请保证新服务器和原服务器的文件目录结构一致&#xff0c;各种程序的安装路径一致&#xff0c;包括python的安装路径、mysql的秘密 防火墙设置等 网站迁移去另一台服务器&#xff0c;如果重新设置IIS&#xff0c;还是有…...

SQL Server 2022的游标

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 游标是SQL Serv…...

「11月·香港」第三届人工智能、人机交互和机器人国际学术会议(AIHCIR 2024)

第三届人工智能、人机交互和机器人国际学术会议&#xff08;AIHCIR 2024&#xff09;组委会热忱地邀请您参与本届大会。本届大会旨在聚集领先的科学家、研究人员和学者&#xff0c;共同交流和分享在人工智能、人机交互和机器人各个方面的经验和研究成果&#xff0c;为研究人员、…...

【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景

redis stream是redis5引入的特性&#xff0c;一定程度上借鉴了kafka等MQ的设计&#xff0c;部署的redis版本必须 > 5 本文主要讲的是思路&#xff0c;结合简单的源码分析&#xff08;放心&#xff0c;无需深入大量源码&#xff09;&#xff1b;讲述在redis stream文档缺乏&a…...

2026届学术党必备的六大AI学术神器推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理以及深度学习算法的AI论文查重技术&#xff0c;经过对文本的语义结构、句式…...

OpenClaw 从翻车到迎来上百项更新:MiniMax、腾讯、阿里、有道 8 位专家拆解OpenClaw本土化实战解法

责编 | 梦依丹出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;3 月 24 日&#xff0c;行业顶流 OpenClaw 在迎来号称自诞生以来的最大更新之后&#xff0c;却始料未及地上演了一段“装虾五分钟&#xff0c;修 Bug 两小时”的升级翻车大事故。由于强行将插件生态迁移…...

课堂行为及状态检测数据集11697张VOC+YOLO格式

课堂行为及状态检测数据集11697张VOCYOLO格式数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;11697 标注数量(xml文件个数)&#xff1a;1169…...

考研408计算机学科专业基础——计算机组成原理复习

考研408计算机学科专业基础——计算机组成原理复习 核心说明&#xff1a;本笔记聚焦考研408计算机组成原理&#xff08;计组&#xff09;高频考点、必背知识点&#xff0c;贴合命题规律&#xff08;选择大题&#xff09;&#xff0c;剔除冗余内容&#xff0c;突出重难点&#x…...

如何在 React Native 中使用 Expo AV 高效缓存视频文件

本文详解在裸 React Native 项目中集成 expo-av 实现视频本地缓存的完整方案&#xff0c;涵盖路径处理、文件写入、URI 适配及常见兼容性问题&#xff08;如 react-native-fs 路径不被 expo-av 识别&#xff09;&#xff0c;并提供可直接运行的优化代码与关键注意事项。 本…...

3分钟彻底掌握:Windows Defender永久禁用工具defender-control完全指南 [特殊字符]️➡️[特殊字符]

3分钟彻底掌握&#xff1a;Windows Defender永久禁用工具defender-control完全指南 &#x1f6e1;️➡️&#x1f6ab; 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://…...

机械识图:半剖视图

当机件具有中间平面时&#xff0c;在垂直于中间平面的投影面上投射所得到的视图&#xff0c;可以对称中心线为界&#xff0c;一半画成部视&#xff0c;另一半画成视图&#xff0c;这样组合成的图形称为半剖视图。半剖视图既能表达零件的内部形状&#xff0c;又能反映零件的外部…...

PyCINRAD:解锁中国新一代气象雷达数据的Python利器

PyCINRAD&#xff1a;解锁中国新一代气象雷达数据的Python利器 【免费下载链接】PyCINRAD Decode CINRAD (China New Generation Weather Radar) data and visualize. 项目地址: https://gitcode.com/gh_mirrors/py/PyCINRAD 还在为处理复杂的CINRAD雷达数据格式而烦恼吗…...

重构文献预览体验:Zotero PDF Preview让学术效率提升70%的无缝解决方案

重构文献预览体验&#xff1a;Zotero PDF Preview让学术效率提升70%的无缝解决方案 【免费下载链接】zotero-pdf-preview Preview Zotero attachments in the library view. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf-preview 一、场景化痛点&#xff1a…...

OpenWRT中通过Luci框架定制动态Web管理界面

1. Luci框架入门&#xff1a;从零理解MVC架构 第一次接触OpenWRT的Web管理界面时&#xff0c;我完全被Luci框架的简洁高效震惊了。这个基于Lua语言的轻量级框架&#xff0c;用最少的代码实现了路由器的完整配置管理。记得当时为了修改一个简单的网络参数&#xff0c;我翻遍了各…...