Невозможно получить актуальный каталог для __file__ Python - PullRequest
0 голосов
/ 06 декабря 2018

Я пытался получить местоположение открытого файла .py (используя Spyder), который будет использоваться для связи различных файлов и использования имени __file__, чтобы любая машина могла работать из своего текущего каталога.

Проблема в том, что когда я пытаюсь:

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

Это выдает мне ошибку:

NameError: name '__file__' is not defined

Я обошел это, вызвав файлв виде строки, а не переменной имени файла, используя:

location = os.path.abspath(os.path.dirname('__file__'))

Это сработало для получения мне родительского каталога файла, но не фактической папки, в которой был файл:

location = 'C:\Users\......\Scripts'

Когда действительно находится местоположение:

location = 'C:\Users\......\Scripts\ISO'

Я пробовал различные комбинации abspath и dirname и realpath, чтобы получить каталог true , в котором находится файлно я не могу его получить.

Что я делаю неправильно?

1 Ответ

0 голосов
/ 06 декабря 2018

Поскольку я запускал сценарий внутри оболочки Spyder, он не выводил правильный рабочий каталог, поскольку параметры рабочего каталога были каким-то образом смещены относительно пути к файлу.

Это можно решить с помощью Run -> Configuration per file -> The directory of the file being executed

Но более эффективный способ запуска сценария с использованием __file__ - это запуск сценария из файла python3.X.exe в каталоге, в котором расположен сценарий.

...