tomlkit 读写改删
  X5zJxoD00Cah 2023年11月19日 24 0

tomlkit

读写改删


  • parse
  • doc.as_string
  • dumps

tomlkit 读写改删_字符串


Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/fontdata.js

import datetime
from tomlkit import document, table, array, inline_table, date, nl, comment
# tomlkit.date函数解析日期字符串, 用于处理TOML文件中的日期数据

addr = r"d:\data\config.toml"

doc = document()

doc.add(comment("这是一个 TOML 文档"))
doc.add(nl())
doc["title"] = "TOML 示例"

owner = table()
owner["name"] = "Tom Preston-Werner"
owner["dob"] = datetime.datetime(1979, 5, 27, 7, 32, tzinfo=datetime.timezone(datetime.timedelta(hours=-8)))
doc.add("owner", owner)

database = table()
database["enabled"] = True
database["ports"] = array([8000, 8001, 8002])
database["data"] = array([array(["delta", "phi"]), array([3.14])])
temp_targets = inline_table()
temp_targets["cpu"] = 79.5
temp_targets["case"] = 72.0
database["temp_targets"] = temp_targets
doc.add("database", database)

servers = table()

alpha = table()
alpha["ip"] = "10.0.0.1"
alpha["role"] = "前端"
servers.add("alpha", alpha)

beta = table()
beta["ip"] = "10.0.0.2"
beta["role"] = "后端"
servers.add("beta", beta)

doc.add("servers", servers)

with open(addr, "w") as f:
    f.write(doc.as_string())

import tomlkit
addr_2 = r"d:\data\config_2.toml"
with open(addr_2, "w") as f:
    f.write(tomlkit.dumps(doc))

print(type(doc.as_string()), type(tomlkit.dumps(doc)), doc.as_string()==tomlkit.dumps(doc))
# TOMLDocument.as_string
# tomlkit.dumps(data: collections.abc.Mapping, sort_keys: bool = False)  # Mapping or TOML Container

data = {'key': ['value1', 'value2']}  # Mapping or TOML Container
tomlkit.dumps(data)
with open(addr, "w") as f:
    f.write(tomlkit.dumps(data))
    
data = {'data1': data, 'data2': {'data3': data}}
tomlkit.dumps(data)
with open(addr_2, "w") as f:
    f.write(tomlkit.dumps(data))
<class 'str'> <class 'str'> True
import tomlkit

addr = r"d:\data\config.toml"

with open(addr, 'r') as f:
    data = tomlkit.parse(f.read())
print(data, type(data))


addr_2 = r"d:\data\config_2.toml"

with open(addr_2, 'r') as f:
    data = tomlkit.parse(f.read())
print(data, type(data))
{'key': ['value1', 'value2']} <class 'tomlkit.toml_document.TOMLDocument'>
{'data1': {'key': ['value1', 'value2']}, 'data2': {'data3': {'key': ['value1', 'value2']}}} <class 'tomlkit.toml_document.TOMLDocument'>
# tomlkit模块的 as_string 与 dumps
# items

# TOMLDocument.as_string
# tomlkit.dumps(data: collections.abc.Mapping, sort_keys: bool = False)

# dumps 接受Mapping or TOML Container, 例如dict
# as_tring 只接受doc

# dumps as_string 都接受doc的节点
import tomlkit
toml_str = """
key = "value"
"""
doc = tomlkit.parse(toml_str)
print(type(doc['key']), type(doc['key'].as_string()), type(tomlkit.dumps(doc['key'])), doc['key'].as_string()==tomlkit.dumps(doc['key']))
<class 'tomlkit.items.String'> <class 'str'> <class 'str'> True
import tomlkit
addr_2 = r"d:\data\config_2.toml"

data = {'data1': 1, 'data2': {'data3': 3}}
tomlkit.dumps(data)

with open(addr_2, "w") as f:
    f.write(tomlkit.dumps(data))

with open(addr_2, "r") as f:
    doc = tomlkit.parse(f.read())
print(doc)

# 删除数据
del doc['data2']

# 修改数据
doc['data1'] = 'new_value'

with open(addr_2, "w") as f:
    f.write(tomlkit.dumps(doc))

with open(addr_2, "r") as f:
    doc = tomlkit.parse(f.read())
print(doc)
{'data1': 1, 'data2': {'data3': 3}}
{'data1': 'new_value'}
# parse 与 节点items(.)
import tomlkit

# TOML格式的字符串
toml_str = """
[tool.poetry]
name = "my-package"
version = "0.1.0"
description = "My package description"
authors = ["Me <me@example.com>"]
"""

# 使用parse函数解析字符串
doc = tomlkit.parse(toml_str)

# 现在,doc是一个Document对象,你可以像字典一样使用它
print(doc["tool"]["poetry"]["name"])  # 输出 "my-package"
print(doc)

# 写入
addr_3 = r"d:\data\config_3.toml"
with open(addr_3, "w") as f:
    f.write(tomlkit.dumps(doc))
# 或者
with open(addr_3, "w") as f:
    f.write(doc.as_string())

# 读取
with open(addr_3, 'r') as f:
    data = tomlkit.parse(f.read())
print(data, type(data))
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  X5zJxoD00Cah   2023年11月30日   39   0   0 GroupEmail字符串
X5zJxoD00Cah