2017-02-11 16 views
0

У меня есть структура каталогов, как такойКак открыть файл в Python при использовании относительного пути от места расположения скриптов

MainFolder/unitTest/test.py 
MainFolder/run.py 
MainFolder/model/file.py 
MainFolder/config/config.conf 

Внутри file.py я пытаюсь открыть файл

f = open('config/config.conf', 'r') 

Обычно файл.py вызывается из run.py. Текущий рабочий каталог - это файл run.py. поэтому, если я хочу получить доступ к конфигурационному файлу. я перехожу к папке config, а затем к файлу 'config/config.conf' Если я хочу запустить его из модульного теста, мне нужно подняться на один уровень, а затем в папку конфигурации. '../config/config.conf'

Есть ли способ, что при открытии файла, он начинает искать файл, откуда file.py расположен так, что независимо от того, где file.py вызывается я могу получить доступ к файлу, как ../config/config.conf

Это будет размещено на удаленном сервере, поэтому я не могу дать ему полный путь ...

ответ

0

Несомненно, просто создайте файл, например. pwd.py в корневом каталоге проекта.

import os 

PWD = os.path.dirname(os.path.abspath(__file__)) 

то в ваших модулях:

from pwd import PWD 

f = open('%s/config/config.conf' % PWD, 'r') 
+0

Это работает. Tbh Я нахожу это немного глупо, что нет пути перейти с пути файла, в котором находится файл. Но это делает работу – bpb101

0

Что вам нужно, это организовать коды в Python modules. Это помогает вам создавать/управлять/управлять каждым файлом с помощью Pythonic.

Чтобы решить вашу проблему, вы можете работать, установив MainFolder в качестве текущего рабочего каталога с os.chdir в начале file.py. Это означает, что вам нужно иметь полный путь к MainFolder либо с помощью os.path.getcwd в run.py, чтобы узнать или сохранить его в файле конфигурации при развертывании.