Чем относительный путь отличается от абсолютного?
В коде встречаю то 'data/file.txt', то 'C:/Users/.../file.txt'. В чём разница и почему относительный путь иногда «не находит» файл?
3 ответа
Абсолютный путь — это полный адрес от корня диска: C:/Users/Аня/project/data.txt или /home/anya/project/data.txt. Он работает всегда одинаково, откуда бы ты ни запускал программу.
Относительный путь (data/file.txt) считается от текущей рабочей директории — папки, из которой запущен скрипт, а НЕ от папки, где лежит .py-файл. Поэтому если запустить программу из другого места, относительный путь укажет не туда и файл «не найдётся». Проверить текущую папку: import os; print(os.getcwd()).
Чтобы относительный путь считался от самого скрипта, привязывай его к __file__ (см. отдельный приём с pathlib).
Абсолютный — от корня (/ или C:\), относительный — от текущей рабочей папки. Относительный «теряет» файл, когда cwd не та, что ты ожидаешь.
Используй pathlib.