gpt4 book ai didi

python - 如何将字典记录到日志文件中?

转载 作者:太空狗 更新时间:2023-10-29 19:32:54 27 4
gpt4 key购买 nike

我有一本字典:

 d = {name : "John", age: 10}. 

日志文件设置为:

logging.basicConfig(level = logging.DEBUG, filename = "sample.log")

是否可以将此词典记录到“sample.log”文件中?如果是,我该怎么做?

最佳答案

有效的简单解决方案

日志函数会将 '%s' 转换为字符串表示形式(如果对象恰好是容器,则 repr() 将用于包含的对象)

import logging
logging.basicConfig(level=logging.DEBUG, filename='sample.log')
logging.debug('Sample dict log: %s', {'name' : "John", 'age': 10})

它在日志文件中的显示方式:

DEBUG:root:Sample dict log: {'age': 10, 'name': 'John'}

如果你有自定义对象(例如你自己的类的实例),你应该为它实现一个合理的 __str__ 和/或 __repr__任何黑客攻击。

这里有更多信息 What is the difference between __str__ and __repr__?

性能说明

注意

logging.debug('%s', some_dict) 不同于

logging.debug('{0}'.format(some_dict))

在第一个中,函数传递了 2 个参数 '%s' 和原始的 some_dict

在第二个中,函数被传递一个参数,该参数是已经转换为字符串的 some_dict 。因为函数需要评估参数,所以第二个示例将始终进行转换,即使日志记录配置已关闭调试消息的日志记录。

这是不必要的性能损失。在第一个示例中,logging.debug 函数可以决定是否进行转换。

JSON 在这方面不是很好

对于不像 JSON 的对象(对象实例、日期时间等),json.dumps() 将需要自定义序列化程序,例如使用 datetime 对象你会得到:

TypeError: datetime.datetime(...) 不是 JSON 可序列化的

这适用于 json.dumps() 不支持的任何类型

logging 模块会找出对象的良好表示

关于python - 如何将字典记录到日志文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32291361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com