Python - 对巨大文件的小改动

时间:2012-03-16 15:22:12

标签: python

这是一个理论问题,因为我没有实际问题,但我想知道......

如果我有一个巨大的文件,说很多演出,我想改变一个字节,我知道该字节的偏移量,我怎么能有效地做到这一点?有没有办法在不重写整个文件而只写单字节的情况下执行此操作?

我在Python 文件 api中没有看到任何可以让我写入文件中特定偏移量的内容。

4 个答案:

答案 0 :(得分:8)

只要您不需要插入删除字节,就可以在"r+"模式下打开文件,使用{{3}方法将文件对象定位在要更改的字节处,并写出一个字节。

使用低级seek操作可能更有效,它们不执行任何应用程序级缓冲。

如果你需要插入或删除字节,抱歉,你运气不好:没有重写整个文件就无法做到这一点(从第一次插入或删除)。这是POSIX(和AFAIK也是Windows)低级文件API的限制,而不是Python的限制。

答案 1 :(得分:2)

您可以搜索()到一个位置并写一个字节。它将覆盖那里的内容,而不是插入。

答案 2 :(得分:2)

在文件中寻找该位置并写入一个字节。 Python中的文件对象有一个seek方法,它从某个常量中获取整数偏移量:

seek(offset[, whence])

whence参数是可选的,默认为0(绝对文件定位);其他值为1(相对于当前位置的搜索)和2(相对于文件的末尾搜索)。

答案 3 :(得分:0)

以下是可能要执行的操作的好教程:http://diveintopython3.ep.io/files.html#read

'seek'是查找所需字节的方法。上面的链接谈到你需要采取的警告