gpt4 book ai didi

Python mmap.move()

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:14 25 4
gpt4 key购买 nike

执行mmap.move()时“dest”点之后的整个文件是否被重写?

如果我有一个大文件,比如说超过一个演出,并且我只想删除第一行(也许 70 字节?),我可以执行类似 mmap.move(0, 70, <size - 70>) 的操作并根据需要截断文件末尾的最后 70 个字节。执行此操作时,整个文件(减去我覆盖的 70 个字节)是否会完全读取并写回磁盘?

如果是这样,有什么方法可以从文件的开头删除而不必重写整个文件?

最佳答案

典型的文件系统没有“在文件开头截断”之类的功能,但您可以想象创建具有此类功能的文件格式。例如,如果您的原始文件是这样的:

ABCDEFGHIJKL

并且您想删除 AB:

CDEFGHIJKL

但是您不想打乱所有数据,所以就这样吧:

KLCDEFGHIJ

为了支持这一点,您所需要的只是文件“开始”位置的索引,这样您就可以将其视为循环缓冲区。在这种情况下,索引将从 0 开始,删除 AB 后索引将为 2,并且您只需复制要删除的数据量(因此操作将是 O(m) 而不是 O(n),其中 m 是删除的数量,n 是总大小)。

至于在何处以及如何存储簿记信息,这取决于 native 文件格式是什么以及您使用的文件系统。您甚至可以根据您的需要将其存储在单独的元数据系统(例如数据库)中。

关于Python mmap.move(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com