Python: 如何写jsonline不覆盖?
Python: How to write jsonline without overwriting?
我有一段代码,它处理一个目录中的数千个文件,对于每个文件,它生成一个对象(字典),其部分键值为:
{
........
'result': [...a very long list...]
}
如果我处理所有文件,将结果保存在列表中,然后使用 jsonlines 库写入所有文件,我的笔记本电脑 (mac) 将 运行 内存不足。
所以我的解决方案是一个一个处理,得到结果,然后插入jsonline文件,删除对象,释放内存。
查看官方文档后:
https://jsonlines.readthedocs.io/en/latest/
我找不到不覆盖jsonline文件的方法。
那么我如何处理这么大的输出。
此外,我正在使用并行线程来处理结果:
from multiprocessing.dummy import Pool
Pool(4).map(get_result, file_lst)
我希望打开json_file,写入每个结果然后释放内存。
如果我正确理解你的问题,我想这会解决问题:
with jsonlines.open('yourTextFile', mode='a') as writer:
writer.write(...)
正如您提到的,您正在覆盖文件,我认为这是因为您使用 mode='w'
(w = 写入)而不是使用 mode='a'
(a = 追加)
我有一段代码,它处理一个目录中的数千个文件,对于每个文件,它生成一个对象(字典),其部分键值为:
{
........
'result': [...a very long list...]
}
如果我处理所有文件,将结果保存在列表中,然后使用 jsonlines 库写入所有文件,我的笔记本电脑 (mac) 将 运行 内存不足。
所以我的解决方案是一个一个处理,得到结果,然后插入jsonline文件,删除对象,释放内存。
查看官方文档后: https://jsonlines.readthedocs.io/en/latest/
我找不到不覆盖jsonline文件的方法。
那么我如何处理这么大的输出。
此外,我正在使用并行线程来处理结果:
from multiprocessing.dummy import Pool
Pool(4).map(get_result, file_lst)
我希望打开json_file,写入每个结果然后释放内存。
如果我正确理解你的问题,我想这会解决问题:
with jsonlines.open('yourTextFile', mode='a') as writer:
writer.write(...)
正如您提到的,您正在覆盖文件,我认为这是因为您使用 mode='w'
(w = 写入)而不是使用 mode='a'
(a = 追加)