Как импортировать файл конфигурации при вызове скрипта из системы? - PullRequest
0 голосов
/ 31 января 2020

давайте предположим, что у меня есть папка «myProject» со скриптом «mySkript.py» и файл конфигурации «myConfig.py».

При вызове скрипта из «myProject» я бы сделал что-то вроде this:

with open("myConfig") as configurationRawData:
    # do something

Теперь давайте предположим, что я вызываю скрипт не из папки «myProject», а из «User / desktop». В этом случае команда open фактически не найдет «myConfig». Я хочу, чтобы мой сценарий использовал свой собственный путь как root путь и наследовал это свойство для каждого другого сценария, который он мог бы вызвать во время выполнения. Есть идеи?

1 Ответ

2 голосов
/ 31 января 2020

Есть способ сделать это:

import os

config_file = os.path.join(os.path.dirname(__file__),"myConfig.py")

with open(config_file) as configurationRawData:
    # do something

__file__ - это внутренняя python переменная, которая представляет путь к текущему файлу (что-то вроде C:\Users\user\documents\scripts\mySkript.py для windows за пример). Это приводит к самому файлу, это не зависит от рабочего каталога.

os.path.dirname(__file__) дает вам каталог к ​​текущему файлу (C:\Users\user\documents\scripts\ для примера выше).

os.path.join() строит путь так, как нравится вашей ОС, поэтому он выдаст C:\Users\user\documents\scripts\myConfig.py для приведенного выше примера.

Это будет работать независимо от того, какая у вас операционная система (python обрабатывает ее для вас) и до тех пор, пока ваша два файла находятся в одном каталоге.

...