加载大型 (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()
对两个半场。如果其中之一引发异常,则将其减半并重复该过程。很快你就会发现问题所在。
我之前创建了一个 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()
对两个半场。如果其中之一引发异常,则将其减半并重复该过程。很快你就会发现问题所在。