tomlkit 库 写入 toml文件 多注释 date函数注意
  X5zJxoD00Cah 2023年11月19日 10 0
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

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

owner_dob = data['owner']['dob']
datetime_dob = datetime.datetime(1979, 5, 27, 7, 32, tzinfo=datetime.timezone(datetime.timedelta(hours=-8)))
print(owner_dob, type(owner_dob), datetime_dob, type(datetime_dob), owner_dob==datetime_dob)

tomlkit 库 写入 toml文件  多注释 date函数注意_TOML

在Python中,tomlkit.items.DateTime对象是用来表示TOML文件中的日期时间值的。如果你想将tomlkit.items.DateTime对象转换为Python的datetime对象,你可以直接使用datetime模块的datetime类的构造函数来实现。

以下是一个示例:

from datetime import datetime
from tomlkit import parse

# 假设你有一个TOML文档
toml_doc = """
[tool]
last_run = 2022-12-12T12:12:12Z
"""

# 解析TOML文档
parsed_toml = parse(toml_doc)

# 获取tomlkit.items.DateTime对象
toml_datetime = parsed_toml["tool"]["last_run"]
print(toml_datetime, type(toml_datetime))

# 转换为Python的datetime对象
py_datetime = datetime(
    year=toml_datetime.year,
    month=toml_datetime.month,
    day=toml_datetime.day,
    hour=toml_datetime.hour,
    minute=toml_datetime.minute,
    second=toml_datetime.second,
    microsecond=toml_datetime.microsecond,
    tzinfo=toml_datetime.tzinfo,
)

print(py_datetime, type(py_datetime))
print(toml_datetime==py_datetime)

在这个例子中,我们首先解析了一个TOML文档,然后从解析结果中获取了一个tomlkit.items.DateTime对象。然后,我们使用这个tomlkit.items.DateTime对象的属性(如yearmonthday等)来创建一个Python的datetime对象。

需要注意的是,tomlkit.items.DateTime对象的tzinfo属性是一个datetime.timezone对象,所以我们可以直接将其作为datetime对象的tzinfo参数。

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

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

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月09日   29   0   0 cii++数据
X5zJxoD00Cah