Python读写TOML文件

TOML介绍

TOML 的目标是成为一个极简的配置文件格式。TOML 被设计成可以无歧义地被映射为哈希表,从而被多种语言解析。
下文是一个较为详细的TOML介绍
https://segmentfault.com/a/1190000000477752

Python读写TOML

toml包是一个为python语言解析toml编写的第三方包,其在pypi上的地址如下:
https://pypi.org/project/toml/

安装toml解析包

pip install toml

函数说明

toml包十分简单,解析常用的就是如下四个方法:

toml.load(f, _dict=dict)

从文件或者一组文件中解析TOML,返回一个字典对象或类的实例对象。当解析多个文件时,会按照传入顺序依次解析,后边的文件内包含键的值会覆盖之前文件相同键的值

参数
  • f 文件路径,多个文件路径的列表或者文件描述符
  • _dict 将解析结果填充到一个类中去
返回

一个字典对象或者_dict指定的类对象的实例

异常
  • TypeError 如果参数f不是一个文件路径或者路径列表时会抛出该错误
  • TomlDecodeError 解析错误时抛出

toml.loads(s, _dict=dict)

从字符串中解析TOML,返回一个字典对象或类的实例对象

参数
  • s 字符串对象
  • _dict 将解析结果填充到一个类中去
返回

一个字典对象或者_dict指定的类对象的实例

异常
  • TypeError 如果参数f不是一个文件路径或者路径列表时会抛出该错误
  • TomlDecodeError 解析错误时抛出

toml.dump(o, f)

将字典对象写入toml文件

参数
  • o 字典对象
  • f 文件描述符,即打开的文件对象
返回

格式化成toml语言的字符串

异常
  • TypeError 各种错误都会返回该错误,包括传入的文件对象错误

toml.dumps(o)

将字典对象格式化成toml字符串

参数
  • o 字典对象
返回

格式化成toml语言的字符串

代码示例

  • a.toml
title = "TOML in file a"

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # 日期时间是一等公民。为什么不呢?
  • b.toml
title = "TOML in file b"

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # 日期时间是一等公民。为什么不呢?

读取单个配置文件

import toml

file_a = "res/a.toml"

if __name__ == "__main__":
    a = toml.load(file_a)
    print("变量a的类型: %s" % type(a))
    print("变量a的内容: %s" % a)

结果1

读取多个文件

import toml

file_a = "res/a.toml"
file_b = "res/b.toml"

if __name__ == "__main__":
    a = toml.load([file_a, file_b])
    print("后读文件b的结果:%s" % a)
    a = toml.load([file_b, file_a])
    print("后读文件a的结果:%s" % a)

结果2

将字典写入文件

import toml

dst_file = "res/c.toml"

if __name__ == "__main__":
    a = {'a': 1, 'b': {'c': 1, 'd': {'e': 1}}}
    with open(dst_file, 'w') as f:
        r = toml.dump(a, f)
        print(r)

结果3

### Python 中使用 TOML 包进行配置文件读写 #### 安装 `toml` 解析包 为了能够处理 TOML 文件,在 Python 环境下需先安装名为 `toml` 的第三方解析包。此操作可通过执行命令 `pip install toml` 来完成[^1]。 #### 加载并解析 TOML 配置文件 一旦安装好必要的库之后,就可以利用该库的功能轻松地加载和解析 `.toml` 类型的配置文件了。具体来说,只需要导入 `toml` 模块,并调用其中的 `load()` 方法即可实现对指定路径下的 TOML 文件的内容读取与转换成字典对象的操作[^2]。 ```python import toml cfg = toml.load('config.toml') print(cfg) ``` 这段代码会输出整个配置文件作为 Python 字典结构表示出来,使得后续可以通过键名方便快捷地获取对应的值或者子节点数据[^3]。 #### 访问特定部分的数据 对于多级嵌套的情况,比如要取得某个表头下面的具体字段信息,则可以直接按照常规方式索引: ```python print(cfg['owner']) ``` 这行代码将会打印出位于 `[owner]` 表头之下的所有属性及其对应值组成的字典形式的结果。 #### 处理日期时间类型的特殊案例 值得注意的是,当遇到像 DOB (Date of Birth) 这样的时间戳或日期字符串时,它们会被自动识别为相应的 datetime 对象,从而允许开发者更灵活地对其进行运算或其他逻辑判断: ```python print(cfg['owner']['dob'], type(cfg['owner']['dob'])) ``` 上述语句不仅展示了如何提取具体的日期条目,同时也验证了这些项目被正确解释成了 Python 内建的时间类实例。 #### 修改配置项以及保存更改后的配置回原文件 除了读取之外,还可以很方便地更新现有设置或是新增新的参数到内存中的映射里;不过需要注意的是,如果想要持久化所做的任何改动的话,则需要再次借助于 `toml` 库所提供的相应接口将调整过的字典重新序列化为标准格式后再覆盖源文件内容。 ```python # 假设我们想把 owner 下面的名字改成 "New Name" cfg['owner']['name'] = 'New Name' with open('new_config.toml', 'w') as f: toml.dump(cfg, f) ``` 这里演示了一个简单的例子——改变名字后另存新文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值