Зачем нужны файлы?
Переменные исчезают вместе с программой — файлы позволяют сохранить данные надолго.
Куда пропадают переменные?
Небольшая программа:
score = 1200
player = "Anna"
print(score)
Программа заканчивается. Где теперь score и
player? Запустите программу ещё раз — она снова начнёт со
значения score = 1200, как будто предыдущего запуска не было.
Чтобы данные пережили завершение программы — список результатов игры, текст, настройки — их нужно записать в файл на диске (или другом постоянном хранилище) и прочитать обратно при следующем запуске.
Что такое файл?
Файл — это именованный набор данных, который хранится в файловой системе.
Чтобы программа могла открыть нужный файл, ей нужно указать, где этот файл находится. Для этого используется путь к файлу — запись, которая показывает его расположение среди папок и файлов. Например:
# data/results.txt
Здесь data — это папка, а results.txt
— файл внутри неё.
В конечном счёте содержимое файла представлено байтами. Если файл содержит текст, Python
должен знать, как преобразовать эти байты в символы и обратно. Правило такого преобразования
называется кодировкой — подробно поговорим об этом в разделе 15.16, вместе
с различием str и bytes.
Открытие и чтение существующих файлов
file = open("privet.txt", "r", encoding="utf-8") # "r" — режим чтения (read)
content = file.read()
print(content)
file.close() # обязательно закрыть файл после работы
close() — очень частая ошибка новичков.Современный способ: with
file = open("privet.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close() # легко забыть!
with open("privet.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
# файл закроется САМ, даже если внутри блока произойдёт ошибка
with — он существует в Python с версии 2.5, так что дело не в новизне, а в надёжности: файл закроется автоматически при выходе из блока with, даже если внутри что-то пойдёт не так. Начиная с этой главы в книге мы используем именно with и всегда указываем encoding="utf-8" явно (подробнее — в 15.16).