Как проверить наличие директории в корне проекта без абсолютной ссылки? Python
Проект выглядит так:
project_name/logic/somefile.py
project_name/anotherfile.py
... В somefile.py я пытаюсь реализовать логику проверки наличия директории: /project_name/tmp/ и если ее там нет, то создавать эту директорию, чтобы скрипт продолжал работу. Хочу сделать это без указания полного пути.
Не придумал лучшего "костыля", как в anotherfile.py (т.к. он лежит там, где нужно) добавить переменную:
project_dir = os.getcwd()
и потом уже, импортируя эту переменную, работать с ней в somefile.py:
from anotherfile import project_dir
if not path.isdir(project_dir + '/tmp'):
mkdir(project_dir + '/tmp')
Но видимо, я присваиваю в переменную вызов функции, а не значение, поэтому из anotherfile.py она возвращает путь: .../project_name/, а через somefile.py эта переменная возвращает .../project_name/logic/ - такие мои догадки...
Подскажите, пож-та:
- Где я ошибаюсь в project_dir = os.getcwd()?
- Как лучше реализовать проверку и создание директории .../project_name/tmp/?
Ответы (1 шт):
Сделай проект пакетом - добавь пустой __init__.py. Тогда
import project_name
project_name.__file__ будет **/project_name/__init__.py и вот:
import os
project_dir = os.path.dirname(project_name.__file__)
К примеру:
>>> import aiohttp
>>> aiohttp.__file__
'/home/eri/.local/lib/python3.9/site-packages/aiohttp/__init__.py'
>>> os.path.dirname(aiohttp.__file__)
'/home/eri/.local/lib/python3.9/site-packages/aiohttp'
>>>