Українська
Шляхи та текстові файли
Шляхи та файлові операції pathlib
Path є об’єктом шляху; оператор / приєднує компонент без ручного вибору розділювача Windows або Unix. Path.cwd() повертає робочий каталог процесу, а Path.home() – домашній каталог користувача. Вони не обов’язково збігаються з місцем файла програми. Для ресурсу поряд із модулем можна використати Path(__file__).resolve().parent / "data.json".
Відносний шлях інтерпретується від робочого каталогу. Саме тому програма може працювати в IDE й не знаходити файл у терміналі. Для користувацького файла приймайте шлях як аргумент команди. Для невеликого тесту передавайте Path у функцію, не заховуйте абсолютний шлях до власного комп’ютера в тілі функції.
mkdir(parents=True, exist_ok=True) створює каталог із батьками. iterdir() перебирає безпосередніх дітей; glob("*.csv") – відповідні імена; rglob("*.csv") – рекурсивно. Порядок обходу не слід вважати відсортованим: для відтворюваного звіту застосуйте sorted. stem повертає ім’я без останнього суфікса, suffix – суфікс, stat().st_size – розмір файла в байтах.
exists() або is_file() не гарантують успіх наступного читання: стан може змінитися між операціями. Обробляйте OSError та його конкретні підтипи там, де виконуєте дію. unlink() видаляє файл, тому в лабораторних запускайте такі операції лише в окремій тестовій папці. Документація: https://docs.python.org/3.14/library/pathlib.html.
Текстові файли й кодування
open повертає файловий об’єкт. Режим r читає, w створює або обнуляє наявний файл, a дописує, x створює лише новий. Додаток b означає двійкові дані. Текстовому файлу задавайте encoding="utf-8"; двійковий режим працює з bytes і не приймає текстове кодування. Відкритий ресурс використовуйте в with.
read() зчитує весь файл і підходить для невеликих даних. Цикл for line in stream обробляє файл построково. Рядок може містити завершальний символ нового рядка, тому strip застосовуйте свідомо: він також прибирає початкові й кінцеві пробіли, які інколи є частиною даних. read_text і write_text у Path є стислими формами повного читання та запису.
py
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as folder:
path = Path(folder) / "notes.txt"
path.write_text("Перший\nДругий\n", encoding="utf-8")
with path.open(encoding="utf-8") as stream:
for number, line in enumerate(stream, 1):
print(number, line.rstrip("\n"))1 Перший
2 ДругийТимчасовий каталог тут ізолює демонстрацію від справжніх файлів. Для тривалого зберігання використовуйте переданий користувачем шлях. FileNotFoundError означає відсутність, PermissionError – відмову доступу, IsADirectoryError – спробу працювати з каталогом як із файлом на платформах, що так повідомляють. UnicodeError може означати інше кодування. Не замінюйте всі ці причини порожнім списком: інакше пошкоджений файл виглядатиме як порожня база.
datetime працює з датами й часовими інтервалами, os – із середовищем процесу та системними інтерфейсами, shutil – із копіюванням файлів і дерев. Для шляху обирайте pathlib, для копіювання – shutil.copy2, якщо потрібні доступні метадані. Жодна допоміжна бібліотека не скасовує перевірку, який саме каталог буде змінено.