Чтение простого объекта Python из файла - PullRequest
0 голосов
/ 17 января 2019

Наш клиент предоставил нам текстовые файлы, содержащие следующие данные:

{'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 из чтения этого файла?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Друг предложил это решение:

import datetime
from tzlocal import get_localzone as tzlocal

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

Надеюсь, это поможет!

0 голосов
/ 17 января 2019

Использование eval - самый простой способ сделать это, прочитать текстовый файл в строку и сделать следующее:

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

Поскольку часть datetime не является допустимым кодом Python из-за неопределенности части tzinfo, вы можете просто заменить ее ничем, чтобы избежать разбора этого бита. Это исправление будет работать только в том случае, если все данные, очевидно, отформатированы одинаково.

Однако кажется, что легче и чище пытаться получить ввод в более дружественном формате. Либо как чистый объект Python, либо как JSON.

...