加载大型 (16MB) python 词典时出错

Error in loading large(16MB) python dictionary

我之前创建了一个 python 字典并以文本格式保存它的文件。文件大小为 16MB。当我尝试使用 ast

加载它时
f = "dictionaryInTextFile"
fileToRead = open(f, 'r')
Object = fileToRead.read()
fileToRead.close()

ObjectDict = ast.literal_eval(Object)

我收到以下错误

eTraceback (most recent call last):
File "somename.py", line 46, in <module>
   ObjectDict = ast.literal_eval(Object)
File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
   node_or_string = parse(node_or_string, mode='eval')
File "/usr/lib/python2.7/ast.py", line 37, in parse
   return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1

虽然当我尝试加载字典的一部分时,它加载成功。

字典的大小有问题还是从文本文件解析字典时有问题,我该如何解决?

不,ast.literal_eval加载的词典没有具体的大小限制。

但是,字典可能包含的键和值存在限制。引用 the documentation:

The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

我想你的字典包含的不是上述类型。

尽可能将文件分成两半,添加所需的任何标点符号以确保两半仍然是有效的词典。 运行 ast.literal_eval() 对两个半场。如果其中之一引发异常,则将其减半并重复该过程。很快你就会发现问题所在。