shutil — Высокоуровневые операции с файлами

Модуль shutil предоставляет ряд высокоуровневых операций с файлами и коллекциями файлов. Особое внимание уделяется функциям копирования и удаления. В отличие от модуля os, который работает на низком уровне, shutil умеет копировать файлы целиком, а также рекурсивно удалять папки.

import shutil

Копирование файлов и директорий

import shutil

# Скопировать файл (метаданные, такие как время создания, НЕ сохраняются)
shutil.copy('source.txt', 'dest.txt')
shutil.copy('source.txt', 'backup_dir/') # Копирование внутрь папки

# Скопировать файл СО ВСЕМИ метаданными (права, время изменения)
shutil.copy2('source.txt', 'dest.txt')

# Рекурсивное копирование всей папки (вместе со вложенными)
shutil.copytree('my_project/', 'my_project_backup/')

Перемещение и удаление

import shutil

# Перемещение файла или папки (также работает как переименование)
shutil.move('old_folder/', 'new_folder/')
shutil.move('file.txt', 'archive/file.txt')

# Рекурсивное удаление папки со всем содержимым (ОСТОРОЖНО!)
# Эквивалент команды 'rm -rf' в Linux
shutil.rmtree('old_project/')

Архивирование (Zip, Tar)

Модуль включает очень простой интерфейс для создания архивов.

import shutil

# Создание архива из папки 'project'
# использование: make_archive(имя_архива, формат, папка_для_упаковки)
shutil.make_archive('project_backup', 'zip', 'project/')
# Результат: будет создан 'project_backup.zip'

# Распаковка архива
shutil.unpack_archive('project_backup.zip', 'extracted_folder/')

Информация о диске

Проверка свободного места (доступно с Python 3.3+).

import shutil

total, used, free = shutil.disk_usage("/")

print(f"Всего: {total // (2**30)} ГБ")
print(f"Свободно: {free // (2**30)} ГБ")

Полный справочник API (API Reference)

Файловые операции

Функция Описание
shutil.copy(src, dst) Копирует содержимое файла и права доступа.
shutil.copy2(src, dst) Копирует содержимое файла ПЛЮС все метаданные (дату создания/изменения).
shutil.copyfile(src, dst) Быстро копирует только сырое содержимое (без метаданных).
shutil.copytree(src, dst) Рекурсивно копирует всё дерево директории src в dst.
shutil.rmtree(path) Рекурсивно удаляет директорию и всё, что внутри неё.
shutil.move(src, dst) Перемещает файл или директорию по новому пути.
shutil.which(cmd) Ищет путь к исполняемому файлу (эквивалент UNIX команды which).

Операции с архивами

Функция Описание
shutil.make_archive(name, format, root) Создает архив форматов: 'zip', 'tar', 'gztar', 'bztar', 'xztar'.
shutil.unpack_archive(name, extract_dir) Распаковывает архив в директорию extract_dir.
shutil.get_archive_formats() Возвращает список поддерживаемых форматов архивации на данном ПК.