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 ostemp = 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 Pathprint(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 shutilsource = 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 для установки дополнительных инструментов.