Python 在文本文件中使用新行保存词典
我正在处理一些大的文本文件,这些文件在某个时候不适合我的记忆。我的想法是逐行读取它们(因为您不必在内存中加载整个文件),这样我就不会有内存问题Python 在文本文件中使用新行保存词典,python,dictionary,Python,Dictionary,我正在处理一些大的文本文件,这些文件在某个时候不适合我的记忆。我的想法是逐行读取它们(因为您不必在内存中加载整个文件),这样我就不会有内存问题 with open(file) as infile: for line in infile: # do stuff with this line 问题的出现是因为我创建这些文件的方式是在其中加载字典: def save_dictionary_to_txt_file(dic, file_name): import json
with open(file) as infile:
for line in infile:
# do stuff with this line
问题的出现是因为我创建这些文件的方式是在其中加载字典:
def save_dictionary_to_txt_file(dic, file_name):
import json
with open(file_name, 'w') as fp:
fp.write(json.dumps(dic))
假设我的字典是这样的:
{'apple': ['5', '65'], 'blue': ['9', '10', '15', '43'], 'candle': ['15'], 'is': ['5', '6', '13', '45', '96']}
然后在文本文件中,我将它的格式与行完全相同。
是否有任何方法可以在文本文件中插入新行,而无需再次解析该文件?或者最重要的是在内存中加载它?
我尝试了pickle,因为它是一个对象序列化模块,但没有成功。
我尝试的是在字典中每隔两个键就有一个“\n”新行字符
{'apple': ['5', '65'], 'blue': ['9', '10', '15', '43'], '\n', 'candle': ['15'], 'is': ['5', '6', '13', '45', '96']}
我已经尝试过使用json文件,它可以工作(保持字典的格式),但是json文件还有其他问题,使我无法在算法中使用它们。(例如,您不能将另一个字典附加到json文件中,或者如果您可以将整个文件加载到内存中,而我不能这样做的话,您也可以这样做)。json.dump(fp,dic,indent=4)的可能重复项应该可以做到这一点。如果不是的话,
fp.write(json.dumps(dic,indent=4))
@meowgoesthedog我想这不是我想要的。转储到json并从json加载不会保护您免受内存错误的影响。你考虑过数据库吗。Python自带SQLite,谢谢。我不知道为什么我没有想到这一点。有点心胸狭窄。这是一种我可以使用的格式,而不是我最初使用的格式。json.dump(fp,dic,indent=4)
的可能副本应该起作用。如果不是的话,fp.write(json.dumps(dic,indent=4))
@meowgoesthedog我想这不是我想要的。转储到json并从json加载不会保护您免受内存错误的影响。你考虑过数据库吗。Python自带SQLite,谢谢。我不知道为什么我没有想到这一点。有点心胸狭窄。这是一种我可以使用的格式,而不是我最初的想法