Альтернативы Exe c и Eval при импорте пути к файлу в виде строки в Python - PullRequest
0 голосов
/ 11 марта 2020

Я должен использовать конфигурационный файл cfg.yml:

---
paths:
    reldir : ../my/dir

В Python я запускаю:

with open('cfg.yml', 'r') as config_file:
    cfg = yaml.load(config_file)

, и моя цель - сделать что-то с некоторыми файлы в каталоге reldir, через файл Python. Вышеуказанное работает хорошо.


Однако эта Python программа должна быть в состоянии работать на Windows и Linux. Если я не ошибаюсь, они используют разные разделители пути, / и \\. Таким образом, я хочу сделать reldir в файле конфигурации более надежным:

---
paths:
    reldir : os.path.join('..','my','dir').

Если мое понимание правильное, это объединит эти имена папок с правильным разделителем, в зависимости от того, где Python Программа выполняется.

Однако это не работает, и print(reldir) выводит os.path.join('..','my','dir') вместо ../my/dir. То есть он принимает строку буквально, не оценивая функцию os.path.join.

Я экспериментировал с exec() и eval(), но сначала я все равно не смог заставить ее работать; и во-вторых, я прочитал здесь , что я не должен их использовать.

Как мне лучше поступить?

1 Ответ

1 голос
/ 11 марта 2020

Обычно "/" также работает для Windows. Вы можете просто попробовать "../my/dir"

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