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

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值