我正在处理某些时候无法容纳我的大文本文件。我的想法是逐行读取它们(因为您不必将整个文件加载到内存中),这样我就不会遇到内存问题。
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文件,或者可以将整个文件加载到我无法执行的内存中)。