一图看懂 toml 模块:用于解析和创建TOML(Tom‘s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全)

news2024/12/26 22:53:55

本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

Alt
@[TOC](一图看懂 toml 模块:用于解析和创建TOML(Tom’s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全))

☘️摘要

全文介绍系统内置 toml(Tom’s Obvious, Minimal Language) 模块、函数、类及类的方法和属性。
它通过代码抓取并经AI智能翻译和人工校对。
是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】

☘️模块图

toml-module

toml
	toml.tz
	toml.decoder
	toml.encoder

☘️类关系图

toml-class

◆object
	◆BaseException
		◆Exception
			◆ValueError
				toml.decoder.TomlDecodeError
	◆datetime.tzinfo
		toml.tz.TomlTz
	toml.decoder.CommentValue
	toml.decoder.InlineTableDict
	toml.decoder.TomlDecoder
		toml.decoder.TomlPreserveCommentDecoder
	toml.encoder.TomlEncoder
		toml.encoder.TomlArraySeparatorEncoder
		toml.encoder.TomlNumpyEncoder
		toml.encoder.TomlPathlibEncoder
		toml.encoder.TomlPreserveCommentEncoder
		toml.encoder.TomlPreserveInlineDictEncoder

☘️什么是TOML?

TOML —— Tom’s Obvious, Minimal Language.
作者 Tom Preston-Werner, Pradyun Gedam 等人。

目标:

  • TOML的目标是成为一种最小的配置文件格式,由于其明显的语义,它易于阅读。
  • TOML被设计成明确地映射到哈希表。TOML应该很容易被解析成各种语言的数据结构。
    发行规范参见:https://toml.io

举例:

# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8000, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]

与其它格式兼容

  • TOML与用于应用程序配置和数据序列化的其他文件格式(如YAML和JSON)共享一些特性。
  • TOML和JSON都很简单,使用普遍的数据类型,这使得它们很容易编写代码或用机器解析。
  • TOML和YAML都强调人类的可读性特性,比如注释,使人们更容易理解给定行的目的。
  • TOML的不同之处在于,它允许注释(与JSON不同),但保持简单性(与YAML不同)。

由于TOML明确地打算作为一种配置文件格式,所以解析它很容易,但它不打算序列化任意数据结构。
TOML总是在文件的顶层有一个哈希表,它可以很容易地将数据嵌套在它的键中,但它不允许顶层数组或浮点数,因此它不能直接序列化一些数据。
也没有标准标识TOML文件的开始或结束,这会使通过流发送TOML文件变得复杂。这些细节必须在应用层上协商。

人们经常将INI文件与TOML进行比较,因为它们在语法和用作配置文件方面具有相似性。然而,INI没有标准化的格式,而且它们不能优雅地处理一到两层以上的嵌套。

进一步阅读:
YAML 规范:
JSON 规范:
Wikipedia关于INI文件:

参见:
TOML标准

☘️模块全展开

🔵【toml】

toml, fullname=toml, file=toml_init_.py

Python模块,用于解析和发出TOML。在MIT许可下发布。

🌿统计

序号类别数量
4str7
6list1
8dict1
9module3
10class9
11function4
13residual2
14system10
15private1
16all27

🌿常量

str

1 spec 0.5.0

🌿模块

2 toml.tz

tz, fullname=toml.tz, file=toml\tz.py

3 toml.decoder

decoder, fullname=toml.decoder, file=toml\decoder.py

4 toml.encoder

encoder, fullname=toml.encoder, file=toml\encoder.py

🌿函数

5 load(f, _dict=<class ‘dict’>, decoder=None)

load(f, _dict=<class ‘dict’>, decoder=None), module=toml.decoder, line:113 at site-packages\toml\decoder.py

解析指定的文件或文件作为toml并返回一个字典。
    参数:
        f:文件路径打开,文件读入数组单一dict或一个文件描述符
        _dict:(可选)指定的类返回toml字典
        decoder:解码器使用
    返回:解析toml文件表示为一个字典
        提出:TypeError——TomlDecodeError:而 IOError / FileNotFoundError -当一个数组没有那么有效(现有)
    Raises:
        TypeError -- 当f是无效的类型
        TomlDecodeError: toml解码错误
        IOError / FileNotFoundError -- 当一个数组没有那么有效(已存在)
        (Python 2 / Python 3)          文件路径忽略。

6 loads(s, _dict=<class ‘dict’>, decoder=None)

loads(s, _dict=<class ‘dict’>, decoder=None), module=toml.decoder, line:165 at site-packages\toml\decoder.py

将字符串解析为toml
    参数:
        s: 要解析的字符串
        _dict: (可选)指定返回的toml字典的类
    返回:
        以字典表示的解析toml文件
    Raises:
        TypeError: 当传入非字符串时
        TomlDecodeError: 解码toml时出错

示例:

>>> import toml
>>> toml_string = """
... # This is a TOML document.
...
... title = "TOML Example"
...
... [owner]
... name = "Tom Preston-Werner"
... dob = 1979-05-27T07:32:00-08:00 # First class dates
...
... [database]
... server = "192.168.1.1"
... ports = [ 8001, 8001, 8002 ]
... connection_max = 5000
... enabled = true
...
... [servers]
...
...   # Indentation (tabs and/or spaces) is allowed but not required
...   [servers.alpha]
...   ip = "10.0.0.1"
...   dc = "eqdc10"
...
...   [servers.beta]
...   ip = "10.0.0.2"
...   dc = "eqdc10"
...
... [clients]
... data = [ ["gamma", "delta"], [1, 2] ]
...
... # Line breaks are OK when inside arrays
... hosts = [
...   "alpha",
...   "omega"
... ]
... """

>>> parsed_toml = toml.loads(toml_string)

7 dump(o, f, encoder=None)

dump(o, f, encoder=None), module=toml.encoder, line:12 at site-packages\toml\encoder.py

将dict作为toml写入文件
    参数:
        o: 对象转储到toml
        f: 文件描述符,toml应该存储在其中
        encoder: 用于构造输出字符串的 ``TomlEncoder``
    返回:
        包含字典对应的toml的字符串
    Raises:
        TypeError: 当传入文件描述符以外的任何内容时

举例:

>>> with open('new_toml_file.toml', 'w') as f:
...     new_toml_string = toml.dump(parsed_toml, f)
>>> print(new_toml_string)
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002,]
connection_max = 5000
enabled = true
[clients]
data = [ [ "gamma", "delta",], [ 1, 2,],]
hosts = [ "alpha", "omega",]
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"

注意:

  • 对于Numpy用户,默认数据类型为 np.floatX 不会被toml转换为浮点数,而是被编码为字符串。
  • 为了解决这个问题,在保存数据时指定 TomlNumpyEncoder
>>> import toml
>>> import numpy as np
>>> a = np.arange(0, 10, dtype=np.double)
>>> output = {'a': a}
>>> toml.dumps(output)
'a = [ "0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0",]\n'
>>> toml.dumps(output, encoder=toml.TomlNumpyEncoder())
'a = [ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0,]\n'

8 dumps(o, encoder=None)

dumps(o, encoder=None), module=toml.encoder, line:34 at site-packages\toml\encoder.py

    字符串化的输入字典,以 toml 格式。
    参数:
        o: 转储到toml的对象
        encoder: 用于构造输出字符串的 ``TomlEncoder``
    返回:
        字符串包含与dict对应的toml
    举例:
        >>> import toml
        >>> output = {
        ... 'a': "I'm a string",
        ... 'b': ["I'm", "a", "list"],
        ... 'c': 2400
        ... }
        >>> toml.dumps(output)
        a = "I'm a string"
        b = [ "I'm", "a", "list",]
        c = 2400

举例:

>>> new_toml_string = toml.dumps(parsed_toml)
>>> print(new_toml_string)
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002,]
connection_max = 5000
enabled = true
[clients]
data = [ [ "gamma", "delta",], [ 1, 2,],]
hosts = [ "alpha", "omega",]
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"

🌿类

9 toml.decoder.TomlDecoder

TomlDecoder, toml.decoder.TomlDecoder, module=toml.decoder, line:635 at site-packages\toml\decoder.py

method

1 bounded_string(self, s)

kind=method class=TomlDecoder objtype=function line:923 at …\lib\site-packages\toml\decoder.py

2 embed_comments(self, idx, currentlevel)

kind=method class=TomlDecoder objtype=function line:1038 at …\lib\site-packages\toml\decoder.py

3 get_empty_inline_table(self)

kind=method class=TomlDecoder objtype=function line:643 at …\lib\site-packages\toml\decoder.py

4 get_empty_table(self)

kind=method class=TomlDecoder objtype=function line:640 at …\lib\site-packages\toml\decoder.py

5 load_array(self, a)

kind=method class=TomlDecoder objtype=function line:944 at …\lib\site-packages\toml\decoder.py

6 load_inline_object(self, line, currentlevel, multikey=False,

kind=method class=TomlDecoder objtype=function line:654 at …\lib\site-packages\toml\decoder.py

7 load_line(self, line, currentlevel, multikey, multibackslash)

kind=method class=TomlDecoder objtype=function line:706 at …\lib\site-packages\toml\decoder.py

8 load_value(self, v, strictly_valid=True)

kind=method class=TomlDecoder objtype=function line:810 at …\lib\site-packages\toml\decoder.py

9 preserve_comment(self, line_no, key, comment, beginline)

kind=method class=TomlDecoder objtype=function line:1035 at …\lib\site-packages\toml\decoder.py

10 toml.decoder.TomlDecodeError

TomlDecodeError, toml.decoder.TomlDecodeError, module=toml.decoder, line:50 at site-packages\toml\decoder.py

    基本的 toml异常/错误。

11 toml.decoder.TomlPreserveCommentDecoder

TomlPreserveCommentDecoder, toml.decoder.TomlPreserveCommentDecoder, module=toml.decoder, line:1042 at site-packages\toml\decoder.py

method

1 embed_comments(self, idx, currentlevel)

kind=method class=TomlPreserveCommentDecoder objtype=function line:1051 at …\lib\site-packages\toml\decoder.py

2 preserve_comment(self, line_no, key, comment, beginline)

kind=method class=TomlPreserveCommentDecoder objtype=function line:1048 at …\lib\site-packages\toml\decoder.py

12 toml.encoder.TomlEncoder

TomlEncoder, toml.encoder.TomlEncoder, module=toml.encoder, line:129 at site-packages\toml\encoder.py

method

1 dump_inline_table(self, section)

kind=method class=TomlEncoder objtype=function line:157 at …\lib\site-packages\toml\encoder.py

保持内联表的紧凑语法,而不是扩展到子表。
    [参见:](https://github.com/toml-lang/toml#user-content-inline-table)

2 dump_list(self, v)

kind=method class=TomlEncoder objtype=function line:150 at …\lib\site-packages\toml\encoder.py

3 dump_sections(self, o, sup)

kind=method class=TomlEncoder objtype=function line:182 at …\lib\site-packages\toml\encoder.py

4 dump_value(self, v)

kind=method class=TomlEncoder objtype=function line:174 at …\lib\site-packages\toml\encoder.py

5 get_empty_table(self)

kind=method class=TomlEncoder objtype=function line:147 at …\lib\site-packages\toml\encoder.py

13 toml.encoder.TomlArraySeparatorEncoder

TomlArraySeparatorEncoder, toml.encoder.TomlArraySeparatorEncoder, module=toml.encoder, line:242 at site-packages\toml\encoder.py

method

1 dump_list(self, v)

kind=method class=TomlArraySeparatorEncoder objtype=function line:252 at …\lib\site-packages\toml\encoder.py

14 toml.encoder.TomlPreserveInlineDictEncoder

TomlPreserveInlineDictEncoder, toml.encoder.TomlPreserveInlineDictEncoder, module=toml.encoder, line:236 at site-packages\toml\encoder.py

15 toml.encoder.TomlNumpyEncoder

TomlNumpyEncoder, toml.encoder.TomlNumpyEncoder, module=toml.encoder, line:270 at site-packages\toml\encoder.py

16 toml.encoder.TomlPreserveCommentEncoder

TomlPreserveCommentEncoder, toml.encoder.TomlPreserveCommentEncoder, module=toml.encoder, line:286 at site-packages\toml\encoder.py

17 toml.encoder.TomlPathlibEncoder

TomlPathlibEncoder, toml.encoder.TomlPathlibEncoder, module=toml.encoder, line:294 at site-packages\toml\encoder.py

method

1 dump_value(self, v)

kind=method class=TomlPathlibEncoder objtype=function line:299 at …\lib\site-packages\toml\encoder.py

🌿私有或局部

18 spec 0.5.0

🔵【toml.tz】

tz, fullname=toml.tz, file=toml\tz.py

🔵【toml.decoder】

decoder, fullname=toml.decoder, file=toml\decoder.py

🔵【toml.encoder】

encoder, fullname=toml.encoder, file=toml\encoder.py

🔵【datetime】

datetime, fullname=datetime, file=datetime.py

🔵【io】

io, fullname=io, file=io.py

🔵【re】

re, fullname=re, file=re.py

🔵【sys】

sys, fullname=sys

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

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

相关文章

leap模型重点关注技术,如:能源结构清洁转型、重点领域如工业、交通节能减排降耗、新能源发电系统及发电成本最优化、区域碳达峰碳中和实现路径设计及政策评估

模型简介&#xff1a; 中文名&#xff1a;LEAP模型 外文名&#xff1a;Long Range Energy Alternatives Planning System/ Low emission analysis platform 采用部门分析法建立的LEAP模型&#xff08;长期能源可替代规划模型&#xff09;是一种自下而上的能源-环境核算工具&a…

Spark大数据处理讲课笔记3.8 Spark RDD典型案例

文章目录 零、本节学习目标一、利用RDD计算总分与平均分&#xff08;一&#xff09;提出任务&#xff08;二&#xff09;准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS &#xff08;三&#xff09;实现步骤1、打开RDD项目2、创建计算总…

FS2455高效率的同步降压DC-DC转换器5A输出电流

概述 FS2455是一种高效率的同步降压DC-DC转换器&#xff0c;具有5A输出电流。 FS2455在4.5V到30V的宽输入电压范围内工作&#xff0c; 集 成主开关和同步开关&#xff0c;具有非常低的RDS&#xff08;ON&#xff09;以最小化传导损失。 FS2455具有轻载时的应用和高效率。此外…

[GFCTF 2021]文件查看器(GZ、过滤器、phar) day4

打开界面直接一个登录界面&#xff0c;直接admin/admin登录进去 。 进来之后发现是一个文件查看器的功能 随便输入了点东西发现了报错&#xff0c;然后读取文件的功能&#xff0c;输入Files.classs.php发现读取不成功 换了个index.php <?phpfunction __autoload($classN…

无效的目标发行版: 11

背景&#xff1a;最近在研究es&#xff0c;想着弄一个连接es集群的springboot的工程&#xff0c;然后就在网上找到一个&#xff0c;结果弄到本地运行时&#xff0c;报错了“ 无效的目标发行版: 11 ” 看着报错就知道肯定是你导入的项目和你本地的JDK版本不匹配了&#xff0c;然…

手把手教你如何将安卓手机数据导入iPhone!【详解】

案例&#xff1a;安卓数据导入苹果手机 【大神们&#xff0c;刚换了新的苹果手机&#xff0c;原本的安卓手机数据怎么导入新手机&#xff1f;】 想要换用iPhone&#xff0c;但是又不想丢失安卓手机里的重要数据怎么办&#xff1f;如何将安卓手机数据导入iphone&#xff1f;本文…

如何学习5G网络优化才能拿高薪?我已摆烂,各位努力!

“内卷”和“躺平” 有的人卷成了麻花 有的人选择了躺下 毕竟只要躺得够平&#xff0c;就卷不到我 但是更多的人选择在“内卷”与“躺平”的徘徊抉择中 “躺”的核心是休息&#xff0c;“卷”的本质是提升 但是在优橙教育学习5G网络优化 大家学会将两者融合 学习的时候…

玩转ChatGPT:快速制作PPT

一、写在前面 首先还是让小Chat推销下自己&#xff1a; 你是否曾经为制作 PPT 而烦恼&#xff1f;现在有了 ChatGPT&#xff0c;再也不必担心灵感枯竭啦&#xff01;使用 ChatGPT 撰写 PPT 可以让你轻松地组织思路、快速得到内容&#xff0c;无需任何营销口号&#xff0c;Cha…

【算法与数据结构】队列

队列 队列&#xff1a;结构定义 队列是有一篇连续的存储区&#xff0c;其实连续性不重要&#xff0c;而是队列需要保持一个特性&#xff1a; 从队首出元素&#xff0c;从队尾入元素。这一点与顺序表不一样&#xff0c;元素加入的位置不一样 队列&#xff1a;只允许从尾部加入…

P1003 [NOIP2011 提高组] 铺地毯

题目提供者 CCF_NOI 难度 普及- 此篇必须看到底&#xff01; 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n 张地毯&#xff0c;编号从 1 到 n。现在…

电力物联网是什么?在智能配电系统中有什么作用?

摘要&#xff1a;在社会经济和科学技术不断发展中&#xff0c;配电网实现了角色转变&#xff0c;传统的单向供电服务形式已经被双向能流服务形式取代&#xff0c;社会多样化的用电需求也得以有效满足。随着物联网技术的发展&#xff0c;泛在电力物联网开始应用于当今的电力系统…

便携式挂钩型儿童椅 标准ASTMF1235测试项目周期多久?

便携式挂钩型儿童椅 适用于6 个 月至 3 岁之间的儿童&#xff0c;体重不超过 37 磅&#xff0c;并具 备自主协调坐姿的能力。 那么该类产品上亚马逊需要做下面的检测&#xff1a; 便携式儿童外出餐椅 ASTM F1235-18 和 CPSIA&#xff08;铅、邻苯二甲酸盐&#xff09; 亚马逊…

新手开始学【网络安全】要怎么入门?

前言&#xff1a;网络安全如何从零开始学习&#xff0c;少走弯路&#xff1f; 目录&#xff1a; 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09;2、熟悉渗透相关工具&#xff08;3 周&#xff09;3、渗透实战操作&#xff08;5 周&…

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff0c;运行速度提升…

用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力

用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力 一、ChatGPT产生文案二、腾讯智影网站三、选择一个2D数字人四、粘贴文本五、编辑自定义&#xff0c;合成六、资源七、其他数字人平台推荐八、生成视频预览 本教程收集于&#xff1a;AIGC从入门到精通教程汇总 操作指引 Ch…

KingbaseES V8R3 集群运维系列 -- sync_flag参数配置

​案例说明&#xff1a; 在KingbaseES V8R3集群一主二备的架构中&#xff0c;配置了流复制为同步(sync)模式&#xff0c;但是集群启动后&#xff0c;流复制状态中显示备库是async模式(备库和主库数据已经同步)&#xff0c;从备库的recovery.log日志也可以看到&#xff0c;备库启…

记录--前端实现点击选词功能

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 今天有一个需求&#xff0c;点击选中某个英文单词&#xff0c;然后对这个单词做一些处理&#xff0c;例如高亮背景、查看一些详细信息等等&#xff0c;今天简单实现了一下&#xff0c;效果如下&#x…

ChatGLM-6B本地cpu部署

ChatGLM-6B是清华团队研发的机器人对话系统&#xff0c;类似ChatGPT&#xff0c;但是实际相差很多&#xff0c;可以当作一个简单的ChatGPT。 ChatGLM部署默认是支持GPU加速&#xff0c;内存需要32G以上。普通的机器无法运行。但是可以部署本地cpu版本。 本地部署&#xff0c;需…

ePWM模块(3)

比较模块 CMPA:比较寄存器A,其值与TBCTR值比较,相同时,事件发送到动作模块。 CMPB:比较寄存器B,其值与TBCTR值比较,相同时,事件发送到动作模块。 CMPCTL:控制寄存器(重要) SHDWAFULL(或SHDWBFULL):CMPA(或B)阴影寄存器满标志位 0:未满 1:满了 SHDWAMODE(或…

【致敬未来的攻城狮计划】— 连续打卡第二十六天:瑞萨RA Cortex-M 内核RA2E1 RT-Thread BSP 启蒙知识

系列文章目录 由于一些特殊原因&#xff1a; 系列文章链接&#xff1a;&#xff08;其他系列文章&#xff0c;请点击链接&#xff0c;可以跳转到其他系列文章&#xff09;或者参考我的专栏“ 瑞萨MCU ”&#xff0c;里面是 瑞萨RA2E1 系列文章。 24.RA2E1的 DMAC——数据传输 …