Ситуация: мы решили запустить проект с облаком самых популярных слов в «Войне и мире» на другом компьютере. Первое, что нам нужно сделать, — открыть файл, прочитать его и вывести первые 300 символов на экран. Для этого копируем код из проекта, вставляем в среду разработки и запускаем. Но вместо текста видим на экране ошибку:
❌ FileNotFoundError: [Errno 2] No such file or directory: 'tom1.txt'
Странно, ведь мы взяли точно рабочий код и просто запустили его на новом компьютере, ничего в нём не меняя, но что-то пошло не так.
Что это значит: Python не может найти файл, который мы указали для открытия. Это не знает, что его нет, просто компьютер не находит его по указанному нами месту.
Когда встречается: когда мы ошиблись в написании пути к файлу или в его имени.
Что делать с ошибкой FileNotFoundError: [Errno 2] No such file or directory
Первое, что нужно проверить: а есть ли у нас вообще этот файл? Иногда бывает так, что мы, копируя чужой код, забываем изменить имена файлов на те, которые есть у нас (а не оставлять те, которые были у авторов кода). Если это наш случай, то просто меняем имя файла в скрипте на правильное.
Следующий шаг: нужно указать правильный путь к файлу или положить тот файл в папку со скриптом, который мы запускаем. Если файл называется tom1.txt
, то его можно просто положить или скопировать в ту же папку, что и скрипт, и ошибки не будет:
Если файл должен остаться на своём месте, а скрипт — запускаться из любой папки, то нам нужно указать точный адрес файла. Для этого можно написать полный или относительный путь к файлу, и тогда скрипт будет находить его при запуске из любого места.
В нашем случае мы указали такой путь:
/Users/mihailpolanin/Yandex.Disk.localized/Документы/Яндекс.КОД/исходники/tom1.txt
При этом важно помнить про различие в написании пути на компьютерах с Windows, Mac OS и Linux. В Windows при написании пути папки отделяются друг от друга слешем — косой чертой, наклонённой направо → /
. В этом случае путь выглядел бы так:
C:/Users/Documents/test/tom1.txt
А вот на компьютерах с Mac OS и Linux папки отделяются друг от друга обратной косой чертой, или бэкслешем → /
.
Если вы запускаете чужой код у себя на компьютере, проверьте написание пути к файлу: используете ли вы правильные разделители и точно ли указали путь к нужному файлу.