说我在磁盘中有一个大小为5GB的数据文件,我想在文件的末尾添加另一组大小为100MB的数据 - 只需简单地追加,我不想要修改或移动文件中的原始数据。我知道我可以将孔文件作为一个很长的列表读入内存并将我的小数据附加到它上面,但它太慢了。我怎样才能更有效地做到这一点? 我的意思是,没有将孔文件读入内存?
我有一个生成大量数据流的脚本,比如5GB,作为一个很长的列表,我需要将这些数据保存到文件中。我尝试先生成列表,然后将它们全部输出,但随着列表的增加,计算机的速度变得非常严重。所以我决定多次输出它们:每次我有一个100MB的列表,然后输出它们并清除列表。 (这就是为什么我有第一个问题) 我不知道如何做到这一点。是否有任何lib或函数可以做到这一点?
答案 0 :(得分:0)
让我们从第二点开始:如果您在内存中存储的列表大于可用内存,则计算机将开始使用hd作为ram,这会严重降低所有内容的速度。在您的情况下输出的最佳方式是尽可能地填充内存(始终为PC上运行的其余软件保留足够的空间),然后一次性写入文件。
在文件中存储列表的最快方法是使用pickle
,以便存储比格式化文件占用更少空间的二进制数据(因此即使读/写过程也要快得多)。
当您写入文件时,应使用with open('namefile', 'w') as f
之类的内容始终打开文件。这样,您可以节省打开/关闭文件的时间,并且光标始终位于最后。如果您决定这样做,请在编写文件后使用f.flush()
,以避免在发生错误时丢失数据。无论如何,append
方法都是不错的选择。
如果你提供一些代码,那么帮助你会更容易......