文章目录
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)
读取多个文件
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)
将字典写入文件
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)