Python для начинающих: Работа с текстовыми файлами

Файл — последовательность байтов, хранящаяся во внешней памяти компьютера и имеющая уникальное имя. Python поддерживает множество типов файлов, условно делимых на текстовые и бинарные. Бинарные файлы будут рассмотрены в следующем уроке.

Работа с текстовыми файлами

Текстовые файлы содержат последовательности символов, понятных человеку. Текстовые редакторы позволяют их читать и редактировать. Работа с файлами в Python включает этапы: открытие, операции (чтение, запись, добавление данных) и закрытие. Закрытие файла — обязательный этап.

Открытие файла

Для открытия используется функция open(). Минимальный аргумент — путь к файлу.

Пример:

f = open("Example.txt", "r")

Здесь:

  • f — переменная, хранящая файловый объект.
  • "Example.txt" — имя файла (в той же директории, что и скрипт).
  • "r" — режим открытия (чтение; по умолчанию, если режим не указан).

Второй аргумент open() — mode — определяет режим:

Режим Описание
r (read) Чтение. FileNotFoundError, если файл не найден.
w (write) Запись. Создаёт файл, если его нет; стирает содержимое, если существует.
a (append) Дозапись. Создаёт файл, если его нет; добавляет данные в конец, если существует.
x (create) Создание. FileExistsError, если файл уже существует.

Возможны комбинации:

  • + — открытие для чтения и записи (r+, w+, a+).
  • t — текстовый файл (по умолчанию).
  • b — бинарный файл.

Закрытие файла

Закрытие файла освобождает ресурсы. Выполняется методом close():

f.close()

Менеджер контекста

Для автоматического закрытия используется менеджер контекста with:

with open("Example.txt", "wt") as f:
    print(f.closed) # False — файл открыт
print(f.closed) # True — файл закрыт

Запись в файл

Запись осуществляется функцией print() или методом write().

print():

with open("Example.txt", "w") as f:
    print("Hello!!!", file=f, end="")

end="" предотвращает добавление символа перевода строки.

write():

with open("Example.txt", "w") as f:
    bytes_written = f.write("Python")
    print(bytes_written) # Количество записанных байт

write() принимает только строки. Для записи списков чисел требуется преобразование в строки:

s = list(range(10))
with open("Example.txt", "w") as f:
    for i in s:
        f.write(str(i) + " ") # или использовать print

writelines() записывает список строк:

s = ["A", "B", "C"]
with open("Example.txt", "w") as f:
    f.writelines(s)

Чтение из файла

Для чтения используются методы read(), readline() и readlines().

read():

with open("Example.txt", "r") as f:
    content = f.read()
    print(content) # Всё содержимое
    first_five = f.read(5) # Первые 5 символов
    print(first_five)

readline():

with open("Example.txt", "r") as f:
    line1 = f.readline()
    print(line1) # Первая строка
    line2 = f.readline()
    print(line2) # Вторая строка

readlines():

with open("Example.txt", "r") as f:
    lines = f.readlines()
    print(lines) # Список строк

Файл — итерируемый объект:

with open("Example.txt", "r", encoding='utf-8') as f:
    for line in f:
        print(line, end="")

Позиция курсора

Для определения и изменения позиции курсора используются методы tell() и seek():

with open("Example.txt", "r") as f:
    f.read(2)
    position = f.tell()
    print(position) # Текущая позиция
    f.seek(4)  # Изменение позиции
    new_position = f.tell()
    print(new_position) # Новая позиция
    content = f.read()
    print(content) # Чтение с новой позиции

Кодировка

При работе с кириллицей указывайте кодировку:

with open("Example.txt", "r", encoding="utf-8") as f:
    # ... чтение файла ...

Рассмотрены основные операции с текстовыми файлами в Python: открытие, чтение, запись и закрытие. Изучение документации поможет глубже освоить возможности работы с файлами.

Что будем искать? Например,программа