← Все вопросы

Чем относительный путь отличается от абсолютного?

Задан 3 месяца назад741 просмотров3 ответа
12

В коде встречаю то 'data/file.txt', то 'C:/Users/.../file.txt'. В чём разница и почему относительный путь иногда «не находит» файл?

3 ответа

19

Абсолютный путь — это полный адрес от корня диска: C:/Users/Аня/project/data.txt или /home/anya/project/data.txt. Он работает всегда одинаково, откуда бы ты ни запускал программу.

Относительный путь (data/file.txt) считается от текущей рабочей директории — папки, из которой запущен скрипт, а НЕ от папки, где лежит .py-файл. Поэтому если запустить программу из другого места, относительный путь укажет не туда и файл «не найдётся». Проверить текущую папку: import os; print(os.getcwd()).

Чтобы относительный путь считался от самого скрипта, привязывай его к __file__ (см. отдельный приём с pathlib).

8

Абсолютный — от корня (/ или C:\), относительный — от текущей рабочей папки. Относительный «теряет» файл, когда cwd не та, что ты ожидаешь.

5

Используй pathlib.

Ваш ответ

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