Уроки з програмного забезпечення та приклади кодування | Вагфо

Підручники з програмного забезпечення => Python => Тема розпочата: Vagfo від Бер. 18, 2026, 12:40 PM

Назва: Python у роботі з файлами та обробка винятків (Exception Handling)
Відправено: Vagfo від Бер. 18, 2026, 12:40 PM
У Python робота з файлами та обробка винятків — це незамінні частини реальних проєктів. Завдяки читанню/запису файлів ви зберігаєте дані назавжди, керуєте конфігураційними файлами або ведете логи. Обробка винятків дозволяє програмі не падати в несподіваних ситуаціях, а елегантно обробляти помилки. Станом на 2026 рік ці теми особливо критичні в data science, автоматизації, веб-скрапінгу та бекенд-розробці (Django/Flask).

У Google в Україні та світі дуже високий попит на запити «Python робота з файлами», «Python try except», «Python with open», «Python exception handling». Від початківців до середнього рівня — всі вивчають ці теми. Ці навички роблять ваш код надійним (robust) і виділяють вас у професійних проєктах.

Чому варто вивчати роботу з файлами та обробку винятків? (перспектива 2026)

1. Робота з файлами (File I/O)
У Python файли відкриваються функцією open(). Найкраща практика — використовувати блок with (файл автоматично закривається, немає витоків ресурсів).
Ось основні приклади:

# Запис (write) — створює файл, якщо його немає
with open("example.txt", "w", encoding="utf-8") as file:
    file.write("Привіт, Python!\n")
    file.write("Це другий рядок.\n")
    file.writelines(["Третій рядок\n", "Четвертий рядок\n"])

# Дописування (append)
with open("example.txt", "a", encoding="utf-8") as file:
    file.write("Новий доданий рядок.\n")

# Читання (read)
with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()  # читає все
    print(content)

# Альтернативи
# file.seek(0)          # повернутися на початок
# lines = file.readlines()  # список рядків
# for line in file:        # ітерація по рядках (економить пам'ять)
#    print(line.strip())

Режими файлів:
Encoding: для українських символів обов'язково encoding="utf-8".

Робота з CSV-файлами
CSV — основа для data science. Використовуйте вбудований модуль csv або Pandas.

import csv

# Запис
with open("data.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(["Ім'я", "Вік", "Місто"])
    writer.writerow(["Андрій", 30, "Київ"])
    writer.writerows([["Олена", 25, "Львів"], ["Максим", 35, "Одеса"]])

# Читання
with open("data.csv", "r", encoding="utf-8") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

# DictReader / DictWriter (з заголовками)
with open("data.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["Ім'я"], row["Вік"])

Робота з JSON-файлами
API зазвичай повертають JSON. Модуль json робить все просто.

import json

# Запис словника в JSON
data = {
    "users": [
        {"name": "Гакан", "age": 28},
        {"name": "Зейнеп", "age": 32}
    ]
}

with open("data.json", "w", encoding="utf-8") as file:
    json.dump(data, file, ensure_ascii=False, indent=4)  # українські символи

# Читання JSON
with open("data.json", "r", encoding="utf-8") as file:
    loaded = json.load(file)
    print(loaded["users"][0]["name"])  # Гакан

Бінарні файли (приклад копіювання зображення)

with open("example.jpg", "rb") as source:
    with open("copy.jpg", "wb") as target:
        target.write(source.read())

Робота зі шляхами (pathlib — сучасний спосіб)
У 2026 році рекомендують pathlib замість старого os.path.

from pathlib import Path

file_path = Path("example.txt")
print(file_path.exists())              # чи існує?
print(file_path.read_text(encoding="utf-8"))  # читання
file_path.write_text("Новий вміст", encoding="utf-8")  # запис

folder = Path("new_folder")
folder.mkdir(exist_ok=True)  # створює папку

2. Обробка винятків (Exception Handling)
Блоки try-except-else-finally дозволяють ловити помилки.

try:
    number = int(input("Введіть число: "))
    result = 100 / number
except ZeroDivisionError:
    print("На нуль ділити не можна!")
except ValueError:
    print("Будь ласка, введіть коректне число!")
except Exception as e:  # загальна помилка
    print(f"Несподівана помилка: {e}")
else:
    print(f"Результат: {result}")  # виконується, якщо немає помилки
finally:
    print("Операцію завершено.")  # завжди виконується

Підняття власних винятків (raise)

def age_check(age):
    if age < 0:
        raise ValueError("Вік не може бути від'ємним!")
    return age

try:
    age_check(-5)
except ValueError as error:
    print(error)  # Вік не може бути від'ємним!

Власні класи винятків

class NegativeAgeError(Exception):
    pass

def age_check(age):
    if age < 0:
        raise NegativeAgeError("Вік не може бути від'ємним!")

try:
    age_check(-10)
except NegativeAgeError as error:
    print(error)

Поширені типи винятків:

Реальний приклад: читання файлу з обробкою помилок

def read_file(filename):
    try:
        with open(filename, "r", encoding="utf-8") as file:
            return file.read()
    except FileNotFoundError:
        print(f"Файл {filename} не знайдено!")
        return None
    except PermissionError:
        print("Немає прав на читання файлу!")
        return None
    except Exception as e:
        print(f"Помилка: {e}")
        return None

content = read_file("no_file.txt")
if content:
    print(content)

Просунуті теми
import logging
logging.basicConfig(filename="errors.log", level=logging.ERROR)
logging.error("Сталася помилка!")


Підсумок та практичні поради
Робота з файлами та обробка винятків піднімає ваш код на професійний рівень. Завжди використовуйте try-except та блок with. Практикуйтеся:

З цим посібником ви повністю опануєте роботу з файлами та винятками.
2026 року писати надійні Python-скрипти без цих знань неможливо!