💻 Практические примеры

⚡ Минимальный рабочий пример

# read_write_demo.py
with open("example.txt", "w", encoding="utf-8") as file:
    file.write("Hello, files!\n")

with open("example.txt", "r", encoding="utf-8") as file:
    print(file.read())

Открываем файл для записи, пишем строку, затем открываем для чтения и выводим содержимое. Контекстный менеджер with закрывает файл автоматически.

Пример 1. Чтение всего файла методом read()

# example_01_read.py
with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(type(content))
    print(content)

read() возвращает строку со всем содержимым файла. Переносы строк сохраняются как \n.

Пример 2. Чтение первых n символов

# example_02_read_n.py
with open("example.txt", "r", encoding="utf-8") as file:
    chunk = file.read(10)
    print(f"Первые 10 символов: {chunk!r}")

Указатель файла смещается на 10 символов вперёд. Повторный вызов read(10) прочитает следующие 10 символов.

Пример 3. Чтение построчно методом readline()

# example_03_readline.py
with open("example.txt", "r", encoding="utf-8") as file:
    first = file.readline()
    second = file.readline()
    print(f"1: {first!r}")
    print(f"2: {second!r}")

Каждый вызов readline() читает одну строку и смещает указатель. В конце строки остаётся \n.

Пример 4. Чтение всех строк в список

# example_04_readlines.py
with open("example.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()
    print(type(lines))
    print(lines)

readlines() возвращает список строк. Каждый элемент содержит символ \n в конце, кроме последней строки, если файл не заканчивается переводом строки.

Пример 5. Чтение файла в цикле

# example_05_loop.py
with open("example.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line, end="")

Файл читается построчно, не загружая весь файл в память. Это лучший способ для больших файлов.

Пример 6. Запись строки методом write()

# example_06_write.py
with open("users.txt", "w", encoding="utf-8") as file:
    file.write("ID: 201 | Name: John | Age: 25 | Status: Active\n")

Режим "w" создаёт файл, если его нет, или перезаписывает существующий. Символ \n добавлен вручную.

Пример 7. Запись списка строк методом writelines()

# example_07_writelines.py
data = [
    "ID: 202 | Name: Alice | Age: 30 | Status: Inactive\n",
    "ID: 203 | Name: Bob | Age: 27 | Status: Active\n",
]

with open("users.txt", "w", encoding="utf-8") as file:
    file.writelines(data)

writelines() записывает строки подряд. Без \n все строки окажутся в одной линии.

Пример 8. Добавление в конец файла

# example_08_append.py
with open("users.txt", "a", encoding="utf-8") as file:
    file.write("ID: 204 | Name: Charlie | Age: 22 | Status: Active\n")

Режим "a" не удаляет старые данные, а дописывает новую строку в конец файла.

Пример 9. Режим r+ — чтение и запись

# example_09_rplus.py
with open("users.txt", "r+", encoding="utf-8") as file:
    content = file.read()
    print("Текущее содержимое:")
    print(content)
    file.write("ID: 205 | Name: Diana | Age: 29 | Status: Inactive\n")

Режим "r+" требует, чтобы файл существовал. После read() указатель в конце, поэтому write() дописывает данные.

Пример 10. Режим x — безопасное создание файла

# example_10_x.py
try:
    with open("new_file.txt", "x", encoding="utf-8") as file:
        file.write("Created in mode 'x'.\n")
    print("Файл создан.")
except FileExistsError:
    print("Ошибка: файл уже существует.")

Режим "x" помогает избежать случайной перезаписи существующего файла.

Пример 11. Несколько файлов в одном with

# example_11_multiple.py
with (
    open("example.txt", "r", encoding="utf-8") as infile,
    open("output.txt", "w", encoding="utf-8") as outfile,
):
    for line in infile:
        outfile.write(line.upper())

Открываем файл для чтения и файл для записи одновременно. Оба файла закроются автоматически. Этот пример копирует содержимое, преобразуя строки в верхний регистр.

Пример 12. Обработка ошибок при открытии

# example_12_errors.py
filename = input("Введите имя файла: ")

try:
    with open(filename, "r", encoding="utf-8") as file:
        print(file.read())
except FileNotFoundError:
    print(f"Ошибка: файл '{filename}' не найден.")
except UnicodeDecodeError:
    print(f"Ошибка: не удалось прочитать файл '{filename}' с кодировкой utf-8.")

При работе с файлами важно обрабатывать возможные исключения, особенно FileNotFoundError.

Как запустить в VS Code

  1. Создайте файл, например file_examples.py.
  2. Скопируйте код одного из примеров выше.
  3. Создайте рядом файл с данными, например example.txt.
  4. Откройте терминал в VS Code (Ctrl + `).
  5. Убедитесь, что активировано виртуальное окружение: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  6. Запустите: python file_examples.py