Как заставить Python запускать подмодуль из пути этого подмодуля для относительных путей? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть проект, который очень сложен в файловой директории.

    project/
        scripts/
            scriptA.py
            ...
        data/
            A.csv
            ...

Файлы в scripts\ изменят вещи в data\.Фактическая структура является более вложенной и вовлеченной.В настоящее время это работает нормально, так как я тестирую каждый файл отдельно, но я бы хотел включить run.py в корневой каталог, который будет выполнять все соответствующие сценарии.

Однако, scriptA.py и т. Д. Все записаны с относительными путями, такими как ../data/A.csv, что означает, что run.py не будет выполняться.Каков будет лучший способ пойти по этому поводу?Я изучил Python __file__, но все еще не уверен, как использовать его в своих целях.

1 Ответ

0 голосов
/ 01 июля 2019

Если вы используете Python 3, я бы сделал это так:

# This is scriptA.py
from pathlib import Path

script_a = Path(__file__)
scripts_dir = script_a.parent
project_dir = scripts_dir.parent
data_dir = project_dir / 'data'
a_csv = data_dir / 'A.csv'

with a_csv.open():
    # Some work on the file

Вы, вероятно, на самом деле не разбили бы это на кучу разных переменных, как это, я просто сделал это для иллюстрации. Проверьте pathlib docs для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...