Доброго времени суток, читатели, зрители моего канала programmer's notes.
Четыре индексных статьи, где ссылки на практически все статьи моего канала
К видео
Это приложение, как и несколько последующих будет посвящено алгоритмам с бинарными файлами. Как я уже не раз говорил, очень люблю разные задачки с бинарными файлами. Поэтому несколько последующих статей из подборок Файлы и Стандартные библиотеки Python будут посвящены интересным задачам.
Алгоритм 1. Сдвиг части файла в сторону конца файла
В предыдущем приложении была приведена программа вставки байтовой строки в нужно место файла. Сам сдвиг части файла производился побайтно. Если файл большой то перенос побайтно больших массивов может потребовать определённое время. Обычно в операциях с большими файлами стараются использовать буферы. Это может значительно ускорить операции, но, разумеется несколько усложняется алгоритм. Поэтому в данной статье приведу пример алгоритма для решения той же задачи, что и в предыдущем приложении, но с использованием буферизации.
Полный текст программы здесь
Приведу скриншот функции, которая осуществляет сдвиг части файла
Входные параметры функции:
- f ― объект-файл, открытый для чтения и записи;
- n1 ― начало фрагмента, который будет сдвигаться;
- n2 ― конец фрагмента. который будет сдвигаться;
- n3 ― куда сдвигаем, т.е. байт с номером n2 получает номер n3;
- n ― размер буфера, от 1 и более.
Идея очень проста. Определяется сколько раз умещается буфер во фрагменте файла (nl1) и остаток (nl2). Тут важно отметить, что предполагается, что во время такого переноса длина файла не меняется, т.е. если необходимо, как в нашем случае, длина файла уже увеличена.
Остальная часть программы представлена ниже.
И так это первая статья из серии алгоритмы с бинарными файлами.
Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.