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

时间:2016-04-27 20:41:22

标签: python python-2.7 dictionary trace

我之前创建了一个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

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

字典的大小是否存在问题,或者在从文本文件中解析字典时是否存在一些问题?我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:0)

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

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

  

提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。

我认为你的词典包含的不是上述类型。

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