Не работает относительный путь к файлу в python

Рейтинг: 0Ответов: 3Опубликовано: 20.07.2023

введите сюда описание изображенияЕсть папка Files, в ней лежит два файла- file_reader.py, который должен открывать второй файл, и, собственно второй файл pi_digits.txt. В коде не работает относительный путь к файлу, но работает абсолютный путь, в названии файла ошибок нет. Почему так? Вот код:

with open('pi_digits.txt') as file_object:
    contents = file_object.read()
print(contents)

Если это имеет значение, то пишу в vs code

Ответы

▲ 2Принят

Путь считается относительно того в какой папке вы находились при запуске программы os.getcwd().

Относительно файла нужно считать вручную.

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

with open( os.path.join(BASE_DIR, 'Files','pi_digits.txt')) as file_object:

__file__ - путь к этому файлу

▲ 0

Вероятная причина ошибки в том, что относительный путь считаете от воторого файла, к третьему, а нужно от первого к третьему.

folder:|file1
       |file2
        dir1|file3
            |file4

Если исполняемый файл 1 вызывает файл 3 в котором прописан относительный путь к файлу 4 как ./file4 то будет ошибка, так как текущий рабочий каталог исполняемого файла folder, а не folder/dir. Относительный путь должен считатся не от файла в котором он прописывается, а от текущей рабочей директории os.getcwd(), в большинстве случаев она совпадает с директорией исполняемого скрипта, но при вызове исполняемого скрипта из консоли она будет текущей рабочей директорией консоли.

▲ 0

По всей видимости, относительный путь я указал неправильно и он должен был начинаться на пару каталогов выше. Всем спасибо за помощь