此问题在此处已有答案:
eval vs json.loads memory consumption(1个答案)
16小时前关门了。
我有一个大字典,需要存储和读取,当我生成并写入文件时,没有问题。但当使用eval()
读取时,出现内存错误。
# a.py
res: Dict[str, Dict[str, int]] = {}
doSomething()
with open('./data/dic.txt', 'w', encoding='UTF-8') as w:
w.write(str(res))
在此之前,没有问题,表明我的RAM应该足够。文件大约是800MB。
# b.py
with open('./data/dict.txt', 'r', encoding='UTF-8') as r:
res: Dict[str, Dict[str, int]] = eval(r.read())
但是当我执行这一步时,MemoryError出现了。
2条答案
按热度按时间8wigbo561#
可以使用
shelve
模块将数据存储在一个“pickle”数据库中,也可以为type
指定别名,这样就更容易使用。使用符合您需要的值替换
database_name
和this_result_name
。如果数据库名称不存在,则将创建该名称。typing.dict从python 3.9开始就被弃用了。builtins.dict现在支持下标。
PEP 585:这个被弃用的功能可能最终会从类型化模块中移除,移除时间不会早于Python 3.9的生命周期结束时间,也就是2025年10月。
hmtdttj42#
使用eval不是一个好主意,使用内置的json模块就可以了。
要将其用于给定代码: