Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在文本文件中使用新行保存词典_Python_Dictionary - Fatal编程技术网

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,谢谢。我不知道为什么我没有想到这一点。有点心胸狭窄。这是一种我可以使用的格式,而不是我最初的想法