⚖️ Старый и современный подход

⚡ Различия в двух словах

Из источника: os.path для работы с путями и «голый» except: в учебных примерах.

Современная практика: pathlib для объектно-ориентированной работы с путями и конкретные исключения в try/except.

Вывод: используйте точные инструменты и не перехватывайте ошибки шире, чем нужно.

📜 Голый except: как в учебнике

В исходном материале встречаются простые конструкции try/except без указания типа исключения:

# старый стиль
number = input("Введите число: ")
try:
    number = int(number)
except:
    print("Ошибка")

Такой код корректен синтаксически, но перехватывает слишком много: KeyboardInterrupt, SystemExit и другие системные исключения.

✅ Современный подход: конкретные исключения

# modern_except.py
try:
    number = int(input("Введите число: "))
except ValueError:
    print("Ошибка: нужно ввести целое число.")
  • Обработчик ловит только ожидаемую ошибку.
  • Программа нормально реагирует на Ctrl+C и sys.exit().
  • Код легче отлаживать.

📜 os.path: строковая работа с путями

Модуль os.path решает задачу, но оперирует строками:

# old_paths.py
import os

base_dir = "/home/user"
filename = "data.txt"
full_path = os.path.join(base_dir, filename)

if os.path.exists(full_path):
    with open(full_path, "r", encoding="utf-8") as file:
        print(file.read())

✅ pathlib: объектно-ориентированные пути

# modern_paths.py
from pathlib import Path

base_dir = Path("/home/user")
file_path = base_dir / "data.txt"

if file_path.exists():
    print(file_path.read_text(encoding="utf-8"))
  • Оператор / соединяет компоненты пути.
  • Методы exists, read_text, mkdir встроены в объект.
  • Код читается короче и не зависит от операционной системы.
⚠️ Проверить по документации: модуль pathlib не входит в исходную лекцию, но является современной рекомендуемой альтернативой os.path в Python 3.

🕰️ Когда старый подход ещё встречается

Учебные материалы и быстрые скрипты часто используют os.path и простые try/except. Это нормально для демонстрации, но в реальных проектах стоит отдавать предпочтение pathlib и конкретным исключениям.