Python
Как открыть файл в Python: open(), with, чтение текста и частые ошибки
Самый простой способ открыть файл в Python — использовать функцию `open()` внутри блока `with`.
Ниже — разделы про что нужно подготовить перед запуском, что значит каждая часть open() и как читать файл построчно, чтобы быстро понять устройство материала, практические ограничения и типовые точки отказа.
Самый простой способ открыть файл в Python — использовать функцию open() внутри блока with
with open("notes.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)
Этот код открывает файл notes.txt, читает весь текст и выводит его в консоль. Блок with нужен, чтобы Python сам закрыл файл после чтения
Что нужно подготовить перед запуском
Создайте папку, например file_test
Внутри этой папки создайте два файла
file_test/
main.py
notes.txt
В notes.txt напишите любой текст
Привет, Python
Это мой первый файл
В main.py вставьте код
with open("notes.txt", "r", encoding="utf-8") as file:
text = file.read()
print(text)
Откройте терминал в папке file_test и выполните
python main.py
Если все сделано правильно, в консоли появится содержимое notes.txt
Что значит каждая часть open()
Разберем строку
open("notes.txt", "r", encoding="utf-8")
"notes.txt" — имя файла или путь к файлу
"r" — режим чтения, от английского read
encoding="utf-8" — кодировка текста. Для русских букв лучше явно указывать utf-8, чтобы не ловить странные символы вместо нормального текста
Переменная file — это объект файла. Через него можно читать данные
text = file.read()
read() читает файл целиком одной строкой
Как читать файл построчно
Если файл большой или вам нужно обработать строки по одной, используйте цикл
with open("notes.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
strip() убирает лишний перенос строки в конце каждой строки
Такой вариант часто используют для логов, списков, CSV-подобных файлов и учебных задач
Как открыть файл из другой папки
Если файл лежит рядом с main.py, достаточно имени
open("notes.txt", "r", encoding="utf-8")
Если файл лежит в папке data, путь будет таким
open("data/notes.txt", "r", encoding="utf-8")
Структура проекта
project/
main.py
data/
notes.txt
Код
with open("data/notes.txt", "r", encoding="utf-8") as file:
print(file.read())
На Windows в Python тоже можно использовать прямой слэш /. Это часто удобнее, чем экранировать обратные слэши
Как проверить, из какой папки запускается программа
Ошибка FileNotFoundError часто появляется не потому, что файл отсутствует, а потому что программа запускается не из той папки
Добавьте проверку
from pathlib import Path
print(Path.cwd())
Path.cwd() покажет текущую рабочую папку. Именно от нее Python ищет относительный путь вроде notes.txt
Если вывод не тот, откройте терминал в нужной папке или используйте путь относительно файла программы
from pathlib import Path
base_dir = Path(__file__).parent
file_path = base_dir / "notes.txt"
with open(file_path, "r", encoding="utf-8") as file:
print(file.read())
Так файл будет искаться рядом с main.py, даже если программу запустили из другой папки
Как сохранить файл в Python
Для записи используют режим "w"
with open("result.txt", "w", encoding="utf-8") as file:
file.write("Python сохранил этот текст\n")
Если файла result.txt нет, Python создаст его. Если файл уже есть, режим "w" перезапишет содержимое
Чтобы добавить текст в конец файла, используйте режим "a"
with open("result.txt", "a", encoding="utf-8") as file:
file.write("Еще одна строка\n")
Частые ошибки
FileNotFoundError
Python не нашел файл по указанному пути
Проверьте три вещи
- файл действительно существует
- имя файла написано без ошибки
- терминал открыт в правильной папке
UnicodeDecodeError
Python открыл файл, но не смог правильно прочитать кодировку
Попробуйте явно указать кодировку
with open("notes.txt", "r", encoding="utf-8") as file:
print(file.read())
Если файл старый и создан в Windows, иногда помогает cp1251
with open("notes.txt", "r", encoding="cp1251") as file:
print(file.read())
PermissionError
Python не может открыть файл из-за прав доступа или потому что файл занят другой программой
Закройте файл в Excel, Word или другом редакторе и попробуйте снова
Мини-задача
Создайте файл shopping.txt
хлеб
молоко
сыр
Напишите программу, которая выводит каждую строку с номером
with open("shopping.txt", "r", encoding="utf-8") as file:
for number, line in enumerate(file, start=1):
print(f"{number}. {line.strip()}")
Ожидаемый вывод
1. хлеб
2. молоко
3. сыр
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как открыть файл с помощью Python: open, pathlib и чтение текста
- Как создать файл в Python: open, pathlib и запись текста
- Как из списка сделать строку в Python: join, map и частые ошибки
- Как проверить тип данных в Python: type(), isinstance() и частые ошибки