1K подписчиков

Стандартные библиотеки в Python. Файлы прямого доступа. Алгоритмы к Видео 5

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Четыре индексных статьи, где ссылки на практически все статьи моего канала

К видео

Это приложение, как и несколько последующих будет посвящено алгоритмам с бинарными файлами. Как я уже не раз говорил, очень люблю разные задачки с бинарными файлами. Поэтому несколько последующих статей из подборок Файлы и Стандартные библиотеки Python будут посвящены интересным задачам.

Алгоритм 1. Сдвиг части файла в сторону конца файла

В предыдущем приложении была приведена программа вставки байтовой строки в нужно место файла. Сам сдвиг части файла производился побайтно. Если файл большой то перенос побайтно больших массивов может потребовать определённое время. Обычно в операциях с большими файлами стараются использовать буферы. Это может значительно ускорить операции, но, разумеется несколько усложняется алгоритм. Поэтому в данной статье приведу пример алгоритма для решения той же задачи, что и в предыдущем приложении, но с использованием буферизации.

Полный текст программы здесь

Приведу скриншот функции, которая осуществляет сдвиг части файла

Функция сдвига части файла в торону конца
Функция сдвига части файла в торону конца

Входные параметры функции:

  • f ― объект-файл, открытый для чтения и записи;
  • n1 ― начало фрагмента, который будет сдвигаться;
  • n2 ― конец фрагмента. который будет сдвигаться;
  • n3 ― куда сдвигаем, т.е. байт с номером n2 получает номер n3;
  • n ― размер буфера, от 1 и более.

Идея очень проста. Определяется сколько раз умещается буфер во фрагменте файла (nl1) и остаток (nl2). Тут важно отметить, что предполагается, что во время такого переноса длина файла не меняется, т.е. если необходимо, как в нашем случае, длина файла уже увеличена.

Остальная часть программы представлена ниже.

Основная часть программы
Основная часть программы

И так это первая статья из серии алгоритмы с бинарными файлами.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Больше файлов хороших и разных
Больше файлов хороших и разных