02. Файлы и каталоги

Работа с файлами и каталогами

Описание: В этом уроке вы научитесь создавать, читать, перемещать и удалять файлы и папки с помощью модулей os, pathlib и shutil. Эти знания необходимы для автоматизации задач и создания реальных утилит.

1. Работа с файлами — основы

Python позволяет легко работать с файлами через встроенную функцию open().

# Открытие файла для записи
with open('example.txt', 'w', encoding='utf-8') as f:
    f.write('Привет, ITspecialist!')

# Чтение файла with open('example.txt', 'r', encoding='utf-8') as f: content = f.read() print(content)

  • 'w' — запись (перезапишет файл).
  • 'a' — добавление (append).
  • 'r' — чтение.
  • Использование with автоматически закрывает файл после работы.

2. Модуль os — старый, но надёжный

Модуль os помогает взаимодействовать с операционной системой.

import os

# Текущая директория print(os.getcwd())

# Список файлов в текущей папке print(os.listdir())

# Проверка существования файла print(os.path.exists('example.txt')) # True или False

# Создание новой папки os.mkdir('new_folder')

# Переименование os.rename('example.txt', 'hello.txt')

# Удаление файла os.remove('hello.txt')

3. pathlib — современный и удобный

pathlib — современный объектно-ориентированный способ работы с файлами.

from pathlib import Path

# Текущая директория p = Path('.') print(p.resolve()) # полный путь

# Перебор всех файлов .txt for file in p.glob('*.txt'): print(file.name)

# Создание и запись файла new_file = Path('data/info.txt') new_file.parent.mkdir(parents=True, exist_ok=True) new_file.write_text('Данные успешно записаны!')

# Чтение print(new_file.read_text())

  • Методы write_text() и read_text() упрощают запись и чтение строк.
  • mkdir(parents=True) создаёт все вложенные папки сразу.
  • glob() ищет файлы по шаблону (например, *.py).

4. shutil — копирование и перемещение

Модуль shutil используется для копирования и перемещения файлов.

import shutil

# Копирование файла shutil.copy('data/info.txt', 'backup/info_copy.txt')

# Перемещение файла shutil.move('backup/info_copy.txt', 'data/copied_info.txt')

# Удаление папки целиком shutil.rmtree('backup', ignore_errors=True)

Совет: используйте shutil для резервного копирования, а не удаления — сначала убедитесь, что нужные файлы действительно сохранены!

5. Пример: очистка временной папки

Напишем мини-утилиту, которая удаляет все временные файлы .tmp из каталога.

from pathlib import Path
import os

temp = Path('C:/temp')

for file in temp.glob('*.tmp'): try: os.remove(file) print(f'Удалён: {file}') except Exception as e: print(f'Ошибка: {e}')

6. Обработка ошибок при работе с файлами

При доступе к файлам могут быть ошибки: файл не найден, нет прав и т.д. Используйте конструкцию try/except:

try:
    with open('config.txt') as f:
        print(f.read())
except FileNotFoundError:
    print('Файл не найден!')
except PermissionError:
    print('Нет доступа к файлу.')

7. Работа с абсолютными и относительными путями

Python различает:
  • Абсолютный путь — полный (например, C:/projects/app/config.ini)
  • Относительный путь — относительно текущей директории

Пример:


from pathlib import Path

print(Path('data').absolute()) print(Path(__file__).parent)

8. Установка недостающих инструментов (pip)

Если у вас не установлен pathlib (в старых версиях Python) или нужно обновить пакеты:

python -m ensurepip --upgrade
pip install --upgrade pip

Для продвинутых операций с файлами (например, архивы, Excel):


pip install openpyxl pandas

9. Мини-проект: копирование структуры папки

Программа, которая копирует только структуру (папки без файлов):

from pathlib import Path
import shutil

source = Path('project') dest = Path('project_backup')

for folder in source.rglob('*'): if folder.is_dir(): (dest / folder.relative_to(source)).mkdir(parents=True, exist_ok=True)

print('Структура каталогов успешно скопирована!')

Итоги урока

Теперь вы умеете:
  • Создавать, читать и удалять файлы.
  • Работать с каталогами с помощью os, pathlib и shutil.
  • Безопасно выполнять операции с файлами.
  • Использовать pip для установки дополнительных инструментов.