在Python中循环二进制文件 - 从开头移除并添加到末尾

3 投票
2 回答
607 浏览
提问于 2025-04-16 05:44

有没有人能告诉我在Python中如何循环处理一个二进制文件?我有一个文件,里面基本上是满满的4字节整数。当这个文件达到一定大小,也就是写入了某个数量的值后,我想从开头删除一个值,然后在结尾添加一个新的值。

我对Python还不是很熟悉,所以想找个简单的方法来实现这个。

谢谢。

2 个回答

3

2000个数字?

这就是16K的数据量。可以直接在内存中处理。实际上,如果你把你的缓冲区设置为16K,可能就能在一次输入输出请求中完成整个操作。而在一些大型的64位系统上,2000个数字差不多就是默认的缓冲区大小。

你的数据量非常小,不要浪费时间去优化这么微不足道的数据。

with open( "my file.dat", "rb", 16384 ) as the_file:
    my_circular_queue = list( read_the_numbers( the_file ) )

if len(my_circular_queue) >=  2000:
    my_circular_queue = my_circular_queue[1:]
my_circular_queue.append( a_new_number )

with open( "my file.dat", "wb", 16384 ) as the_file:
    write_the_numbers( the_file, my_circular_queue )

这完全可以放进内存里。别浪费时间去搞复杂的更新。

3

我的想法是:文件里的第一个整数告诉你数据真正开始的位置。刚开始的时候,这个位置是4(假设一个整数占用4个字节)。当文件满了之后,你就可以从头开始覆盖数据,并且把位置的整数加一。这基本上就是一种简单的环形缓冲区,只不过是以文件的形式存在。

撰写回答