Корневая область видимости (пути)

Есть вот такая структура проекта:

введите сюда описание изображения

Каким способом можно указать НЕ абсолютный путь до файла?

Нужно чтобы это работало:

stats_path = 'logs\\stats.txt'

p.s. Нашёл способ перехода по структуре проекта через точки: .\\ / ..\\, но правильный ли это подход?

stats_path = '..\\..\\logs\\stats.txt'

Ответы (1 шт):

Автор решения: Алексей

Решение нашёл такое:

from pathlib import Path


def root_path() -> Path:
    """Returns project root folder."""
    return Path(__file__).parent.parent.parent  # Тут выход в корень проекта

Создал "хелпер" обращаясь к нему, получаю корневой путь.

Как это выглядит на практике:

import os

from utils.misc.root_path import root_path

STATS_PATH = os.path.join(root_path(), 'logs\\stats.txt')
print(STATS_PATH)  # D:\Projects\idle bot\logs\stats.txt

Теперь перемещение файлов/компонентов/модулей (и их вызов) всегда правильно определяют путь и не нужно рефакторить их

→ Ссылка