从文件中读取纯 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)
希望对您有所帮助!
我们的客户向我们提供了包含以下数据的文本文件:
{'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)
希望对您有所帮助!