Зацикливание двоичного файла в Python - Удалить из начала добавить в конец - PullRequest
3 голосов
/ 19 октября 2010

Может ли кто-нибудь указать мне на метод циклического двоичного файла в Python?У меня есть файл, полный 4-байтовых целых чисел, и, когда файл достигает определенного размера, то есть записано определенное количество значений, я хочу начать удалять одно с начала и добавлять одно в конце.* Я все еще довольно плохо знаком с Python, поэтому просто пытаюсь придумать, как сделать это аккуратно.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 19 октября 2010

2000 номеров?

Это 16K.Сделай это в памяти.Действительно, объявив размер ваших буферов 16 КБ, вы, вероятно, сможете выполнить всю операцию за один запрос ввода-вывода.А в некоторых крупных 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 голосов
/ 19 октября 2010

Моя идея: первое целое число в файле дает вам позицию фактического начала данных. В начале это будет 4 (при условии, что целое число занимает 4 байта). Когда файл заполнен, вы просто начинаете перезаписывать данные в начале и увеличиваете целое число позиции. В основном это простой кольцевой буфер в форме файла.

...