FileNotFoundError: Нет такого файла или каталога — такая ошибка возникает в Python, когда вы пытаетесь получить доступ к несуществующему файлу или папке.
Как это исправить
Чтобы исправить ошибку «нет такого файла или каталога» в Python, убедитесь, что вы ссылаетесь на правильный файл или папку в своей программе.
|
1 2 3 4 5 6 |
try: with open("app.txt", "r") as file: contents = file.read() except FileNotFoundError: print("File not found.") |
В этом примере кода, если файл «app.txt» не найден, будет выдано исключение FileNotFoundError и напечатана ошибка «Файл не найден».
Альтернативные подходы
Используйте метод os.listdir(), чтобы проверить все файлы в каталоге. os.listdir() — это встроенный метод Python, который выводит список файлов в текущем рабочем каталоге.
В Python существует два типа путей:
- Абсолютный путь.
- Относительный путь.
Абсолютный путь в Python
Абсолютный путь всегда содержит корневой элемент и полный список каталогов, необходимый для поиска файла. Таким образом, если вы передадите абсолютный путь, вы не получите сообщение об ошибке «Нет такого файла или каталога», поскольку вы предоставите идеальный путь к этому файлу.
Абсолютный путь в Windows
|
1 |
C:\Windows\pro.exe |
Всегда используйте абсолютный путь для открытия файла.
|
1 |
file = open(r'C:\Users\krunal\index.php') |
Если вы находитесь не в том каталоге, в котором хотите открыть файл, измените текущий рабочий каталог перед открытием файла.
|
1 2 3 4 |
import os os.chdir(r'C:\Users\krunal\public_html') file = open('index.php') |
Случайное использование escape-последовательностей в пути к файлу
Это другая распространенная ошибка, которая может вызвать ошибку «файл не найден»:
|
1 |
path = 'C:\Users\newton\index.php' |
Чтобы избежать этой ошибки, не забудьте использовать необработанный строковый литерал для путей к файлам:
|
1 |
path = r'C:\Users\newton\index.php' |
Абсолютный путь в Linux
|
1 |
/home/users/krunal/www/var/public_html/index.php |
Относительный путь в Python
Относительный путь должен быть объединен с другим путем для доступа к файлу. Относительный путь напрямую связан с текущей работой(cwd). Он начинается с вашего текущего каталога и никогда не начинается с /, потому что это не корневой каталог.
Относительный путь в Windows
|
1 |
pro.exe |
Относительный путь в Linux
|
1 |
./public_html/index.php |
Убедитесь, что вы находитесь в том каталоге, в котором, по вашему мнению, находитесь с os.getcwd(). Если вы запускаете свой код из IDE, вы можете находиться в другом каталоге.
