← Все вопросы

FileNotFoundError при open() — хотя файл точно лежит рядом со скриптом

Задан 11 месяцев назад878 просмотров3 ответа
15
f = open("data.txt")

кидает FileNotFoundError: [Errno 2] No such file or directory: 'data.txt', хотя data.txt лежит в той же папке, что и .py-файл. В чём подвох?

3 ответа

27
✓ Принятый ответ — помог автору

open("data.txt") ищет файл не рядом со скриптом, а в текущей рабочей директории — это папка, ИЗ которой вы запустили программу, а не где лежит сам .py. Если запускаете из другого места (или из IDE с другим рабочим каталогом), путь data.txt указывает совсем не туда.

Проверить, где Python сейчас ищет:

import os
print(os.getcwd())

Надёжное решение — строить путь относительно самого скрипта:

import os
base = os.path.dirname(os.path.abspath(__file__))
path = os.path.join(base, "data.txt")
f = open(path, encoding="utf-8")

Ещё частые мелочи: опечатка в имени, лишнее/недостающее расширение (Windows может прятать .txt), или файл реально в подпапке.

Павел Скрипов os.getcwd() — первое, что надо распечатать, когда «файл рядом, а не находится». · 11 месяцев назад
8

Распечатай os.getcwd() — почти всегда окажется, что рабочая папка не та, что ты думаешь.

4

Проверь расширение: на Windows часто это на самом деле data.txt.txt.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект