Как найти путь к текущему файлу .py в Spyder (Anaconda)? - PullRequest
0 голосов
/ 07 мая 2018

Настройка

Я запускаю скрипт на моем компьютере, который находится в каталоге Users/path/to/my/script.py.

В сценарии я использую путь к сценарию, например,

sub_path = 'Users/path/to/my/'
os.chdir(sub_path + 'other_script/') 

Как видите, я определяю sub_path в коде «вручную».


Задача

Я не хочу определять sub_path вручную, я бы предпочел, чтобы Python сделал это для меня.

Я ищу что-то похожее на код, который я использую для получения текущего рабочего каталога: os.getcwd(), но затем код для получения каталога текущего файла.

В основном я нахожу ответы, подобные этому , в котором говорится,

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

, но в настройках Spyder & Anaconda этотгенерирует NameError: name '__file__' is not defined.

Что я могу сделать?

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Я добавляю следующие строки в любой скрипт, который я запускаю, на случай, если мне понадобится доступ к данным относительно местоположения скрипта

import sys
script = sys.argv[0]
print(script)
'C:/SomeFolder/A_Subfolder/CurrentlyRunningScript.py'  # changed obviously
0 голосов
/ 05 апреля 2019

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

0 голосов
/ 07 мая 2018

Если вы хотите переместиться назад на одну папку / каталог, вы используете .. в своем пути к файлу.

os.chdir('../other_scripts/')

будет работать. Возможно, вам будет полезно просмотреть эту или вики . Если вы хотите перейти от того места, где вы сейчас находитесь, вы можете использовать './new_dir/'. Если вы хотите автоматизировать поиск других файлов, вы можете прочитать здесь , в котором говорится, что нужно использовать os.walk . Это может быть тот же вопрос.

...