literal_eval принимает строку и преобразует ее в объект python.Итак, верно следующее:
ast.literal_eval('{"a" : 1}')
>> {'a' : 1}
Однако вы добавляете некоторые ненужные цитаты.Если бы ваш файл просто содержал пустой словарь ({}
), то создаваемая вами строка выглядела бы так:
ast.literal_eval('"{}"') # The quotes that are here make it return the string "{}"
>> '{}'
Итак, решение было бы изменить строку на ...
ast.literal_eval("{" + FILE.readline().strip() + "}")
... или ...
ast.literal_eval(FILE.readline().strip())
.. в зависимости от формата файла.В противном случае literal_eval видит вашу строку как АКТУАЛЬНУЮ строку из-за кавычек.