Найти тему

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

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

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

К видео

Алгоритм 2. Удаление части файла

Рассмотрим задачу, которая очень похожа на задачу из предыдущего приложения. Там мы раздвигали файл, чтобы вставить фрагмент, а здесь наоборот, сдвинуть часть файла со стороны конца, чтобы удалить не нужный фрагмент. Сдвинуть часть файла ещё не вся задача — ведь файл должен стать короче. Но как раз это не сложно, если использовать метод объекта-файл truncate(). Метод укорачивает файл до указанной в качества параметра длины. Если параметр отсутствует, то удаляется часть файла после текущей позиции (усекается до текущей позиции). Понятно, что метод не будет работать, если файл открыт в режиме "только для чтения".

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

primer47.py

Ниже представлена функция read_write2(), которая выполняет главную функцию: перемещает часть файла в сторону начала, так чтобы полностью закрыть указанный фрагмент.

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

На входе функции

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

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

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

Как я и говорил, важную роль играет метод truncate(), который удаляет лишнюю часть файла в конце.

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

Если вместо того, чтобы попытаться разработать собственный алгоритм, вы каждый раз ищите готовое решение или готовую библиотеку, то тот ли вы путь выбрали
Если вместо того, чтобы попытаться разработать собственный алгоритм, вы каждый раз ищите готовое решение или готовую библиотеку, то тот ли вы путь выбрали