FileNotFoundError: No such file or directory — почему Python не находит файл?
Открываю файл open('data.txt'), а получаю FileNotFoundError: [Errno 2] No such file or directory: 'data.txt'. Файл же лежит в той же папке! Из-за чего Python его не видит и как указать путь?
2 ответа
FileNotFoundError значит: Python ищет файл по указанному пути и не находит его там. «Та же папка» — обманчивое понятие: важно не где лежит ваш .py файл, а из какой папки запущена программа (рабочая директория).
Частые причины:
- Запуск из другой папки. Если вы запустили скрипт из домашней директории,
open('data.txt')ищет файл именно там, а не рядом со скриптом. - Опечатка в имени или расширении (
data.txtпротивData.txtилиdata.text). На Linux/macOS регистр важен. - Файла действительно нет или он называется иначе.
- Для чтения нужен режим
'r'(по умолчанию), а файла не существует —openего не создаёт.
Как чинить:
- Проверьте текущую папку:
import os
print(os.getcwd()) # откуда запущено
print(os.listdir()) # какие файлы тут видны
- Укажите полный путь или путь рядом со скриптом:
import os
base = os.path.dirname(os.path.abspath(__file__))
path = os.path.join(base, "data.txt")
with open(path, encoding="utf-8") as f:
print(f.read())
Если файл вы собираетесь создавать — откройте его на запись open('data.txt', 'w').
Быстрая диагностика: добавьте перед open строки import os; print(os.getcwd()); print(os.listdir()). Вы сразу увидите, в какой папке Python ищет и какие файлы там реально есть. В 9 из 10 случаев окажется, что рабочая папка не та, что вы думали.