📒 

Розширений посібник з видалення файлів і каталогів у Python

У Python робота з файлами та каталогами є поширеним завданням, особливо для додатків, які потребують маніпуляцій з файлами. Цей посібник присвячений розширеним методам видалення файлів і каталогів за допомогою різних модулів Python, зокрема os, shutil і pathlib. Кожен з цих модулів надає різні функціональні можливості для роботи з файловою системою, дозволяючи вам ефективно керувати файлами і каталогами. Щоб завантажити Python, перейдіть за наступним посиланням з офіційного джерела python.org.

Розуміння модулів

1. Модуль os

Модуль os надає можливість використовувати залежні від операційної системи функції, такі як читання або запис до файлової системи. Він включає в себе функції для видалення файлів і каталогів. Використання модуля os на хостингу Linux VPS забезпечує ефективний контроль над управлінням файлами та іншими операціями системного рівня. Цей модуль дозволяє розробникам виконувати такі дії, як читання, запис і видалення файлів і каталогів безпосередньо на сервері

Основні функції:

  • os.remove(path): Вилучає (видаляє) шлях до файлу.
  • os.rmdir(шлях): Вилучає (видаляє) шлях до каталогу. Каталог має бути порожнім.
  • os.unlink(шлях): Інша назва для os.remove(), використовується для видалення файлу.

2. Модуль shutil

Модуль shutil пропонує високорівневий інтерфейс для роботи з файлами. Він особливо корисний для копіювання та видалення каталогів і файлів.

Основні функції:

  • shutil.rmtree(шлях): Рекурсивно видаляє каталог і весь його вміст, включно з підкаталогами і файлами.
  • shutil.move(src, dst): Переміщує файл або каталог в інше місце, що також може бути використано для видалення файлів шляхом переміщення їх у неіснуючий каталог.

3. Модуль pathlib

Модуль pathlib забезпечує об’єктно-орієнтований підхід до обробки шляхів до файлової системи. Цей модуль було введено в Python 3.4 і вважається більш інтуїтивно зрозумілим та читабельним.

Основні функції:

  • Path.unlink(): Видаляє файл.
  • Path.rmdir(): Видаляє порожній каталог.
  • Path.rmtree(): Щоб видалити каталог і його вміст, зазвичай використовують shutil.rmtree() у поєднанні з Path.

Розширені методи вилучення файлів і каталогів

Використання модуля os

Тут описано, як використовувати модуль os для видалення файлів і каталогів:

Варіант A: Запуск в інтерактивному Python

  1. Відкрийте інтерактивний сеанс Python за допомогою введення:
    python3

    (Використовуйте python, якщо так налаштовано Python у вашій системі, але загалом, python3 є рекомендованою командою для Python 3.x).

  2. Скопіюйте та вставте код безпосередньо в інтерактивну сесію (скрипт нижче)

крок Б: запис до файлу скрипта на Python

  1. Створіть новий файл за допомогою текстового редактора, наприклад, nano:
    nano remove_file.py
  2. Скопіюйте та вставте у файл наступний код (скрипт нижче)
  3. Тепер ви можете запустити ваш Python-скрипт з терміналу:
    python3 remove_file.py

Видалення одного файлу

import os
file_path = 'example.txt'
try:
os.remove(шлях до файлу)
print(f'Успішно видалено {шлях_до_файлу}')
except FileNotFoundError:
print(f'Файл {шлях_до_файлу} не існує')
except PermissionError:
print(f'У дозволі відмовлено: неможливо видалити {шлях_до_файлу}')
except Exception as e:
print(f'Виникла помилка: {e}')

Вивести:

Видалення порожнього каталогу

Крок 1: Створення каталогу

Спочатку створіть порожній каталог з назвою example_dir. Ви можете зробити це за допомогою наступної команди:

mkdir example_dir

Крок 2: Створіть скрипт Python

Тепер вам потрібно створити скрипт Python, який містить код для видалення порожнього каталогу. Ви можете скористатися текстовим редактором, наприклад, nano, щоб створити скрипт.

  1. Відкрийте nano, щоб створити новий файл Python:
    nano remove_directory.py
  2. Скопіюйте та вставте наступний код у файл (код нижче)
  3. Тепер запустіть щойно створений скрипт Python:
    python3 remove_directory.py

import os
шлях до каталогу = 'example_dir'
спробувати:
os.rmdir(шлях до каталогу)

f'Успішно видалено каталог {шлях до_каталогу}')
except FileNotFoundError:
print(f'Директорія {шлях до_директорії} не існує')
крім OSError:
print(f'Каталог {путь_до_каталогу} не є порожнім')
except Exception as e:
print(f'Виникла помилка: {e}')

Виведення:

Використання модуля shutil

Крок 1: Створення каталогу з вмістом

Спочатку створіть каталог з назвою example_dir_with_content і додайте до нього деякі файли. Ви можете зробити це за допомогою наступних команд:

mkdir example_dir_with_content
доторкніться до example_dir_with_content/file1.txt
доторкніться до example_dir_with_content/file2.txt

Крок 2: Створення скрипта Python

Тепер вам потрібно створити скрипт Python, який міститиме код для видалення каталогу та його вмісту. Для створення скрипта ви можете скористатися текстовим редактором, наприклад, nano.

  1. Відкрийте nano, щоб створити новий файл Python:
    nano remove_directory_content.py
  2. Скопіюйте та вставте наступний код у файл (код нижче)
  3. Тепер запустіть щойно створений Python-скрипт:
    python3 remove_directory_content.py

Для видалення каталогів з вмістом використовуйте shutil.rmtree():

import shutil
'example_dir_with_content'
спробувати:
shutil.rmtree(шлях до каталогу)
print(f'Успішно видалено каталог {шлях_до_каталогу} та його вміст')
except FileNotFoundError:
print(f'Директорія {шлях до_директорії} не існує')
except PermissionError:
print(f'У дозволі відмовлено: неможливо видалити {путь_до_каталогу}')
except Exception as e:
print(f'Виникла помилка: {e}')

Виведення:

Використання модуля pathlib

pathlib надає сучасний інтерфейс для шляхів файлової системи:

Видалення файлу

з pathlib import Path
file_path = Path('example.txt')
try:
file_path.unlink()
print(f'Успішно видалено {шлях_до_файлу}')
except FileNotFoundError:
print(f'Файл {шлях_до_файлу} не існує')
except PermissionError:
print(f'У дозволі відмовлено: неможливо видалити {шлях_до_файлу}')
except Exception as e:
print(f'Виникла помилка: {e}')

Виведення:

Видалення порожнього каталогу

from pathlib import Pathdirectory_path = Path('example_dir')
try:
directory_path.rmdir() # Це спрацює тільки якщо каталог порожній
print(f'Успішно видалено каталог {шлях_до_каталогу}')
крім FileNotFoundError:
print(f'Директорія {шлях до_директорії} не існує')
крім OSError:
print(f'Каталог {путь_до_каталогу} не є порожнім')
except Exception as e:
print(f'Виникла помилка: {e}')

Виведення:

Витончена обробка помилок

Під час роботи з файловими операціями дуже важливо коректно обробляти винятки, щоб запобігти аварійному завершенню роботи програми. До найбільш поширених винятків відносяться

  • Помилка FileNotFoundError: Виникає при спробі видалити неіснуючий файл або каталог.
  • PermissionError: Виникає, коли користувач не має необхідних дозволів для видалення файлу або каталогу.
  • OSError: Здіймається у разі різних помилок, пов’язаних з операційною системою, зокрема при спробі видалити непорожній каталог.

Висновок

У цьому посібнику ми розглянули, як використовувати такі модулі Python, як os, shutil і pathlib для видалення файлів і каталогів. Кожен модуль пропонує унікальні переваги, і розуміння того, як їх ефективно використовувати, розширить ваші можливості керування файловими системами у ваших додатках. Опанувавши ці методи, ви зможете автоматизувати завдання керування файлами, працювати з файлами більш інтуїтивно і писати надійні скрипти, які взаємодіють з файловою системою.