从文件中读取纯 python 对象

Read plain python object from file

我们的客户向我们提供了包含以下数据的文本文件:

{'op-code-gtm-gtm2-count': {'Label': 'op-code-gtm-gtm2-count', 'Datapoints': [{'Timestamp': datetime.datetime(2018, 12, 25, 17, 10, tzinfo=tzlocal()), 'Sum': 79792.0,....

请注意,它是默认的 python 对象,而不是 json 对象(否则我们将使用 json.load(file))。
关于我们如何通过阅读此文件创建 python 对象的任何建议?

使用 eval 是最简单的方法,将文本文件读入字符串然后执行此操作:

obj = eval(datastring.replace(", tzinfo=tzlocal()", "")

由于 tzinfo 部分未定义,日期时间部分无效 python 代码,您可以将其替换为任何内容以避免解析该位。此修复仅在所有数据显然以相同方式格式化时才有效。

然而,尝试以更友好的格式发送输入似乎更容易、更清晰。作为纯 python 对象或 JSON.

一位朋友提出了这个解决方案:

import datetime
from tzlocal import get_localzone as tzlocal

with open('myfile.txt') as f:
   st = f.read()
   data = eval(st)

希望对您有所帮助!