Я на сервере Jupyter Notebook (v4.2.2) с Python 3.4.2 и
Я хочу использовать глобальное имя __file__
, потому что ноутбук будет клонирован от других пользователей и в одном разделе, который я должен запустить:
def __init__(self, trainingSamplesFolder='samples', maskFolder='masks'):
self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder)
self.maskFolder = self.__getAbsPath(maskFolder)
def __getAbsPath(self, path):
if os.path.isabs(path):
return path
else:
return os.path.join(os.path.dirname(__file__), path)
__getAbsPath(self, path)
проверяет, является ли параметр path
относительным или абсолютным путем и возвращает абсолютную версию path
. Поэтому я могу использовать возвращенный path
безопасно позже.
Но я получаю ошибку
NameError: name
'__file__'
не определен
Я искал эту ошибку в Интернете и нашел "решение", которое лучше использовать sys.argv[0]
, но print(sys.argv[0])
возвращает
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Но правильное расположение ноутбука должно быть /home/ubuntu/notebooks/
.
Спасибо за ссылку Как получить текущее имя IPython Notebook от Martijn Pieters (комментарии), последний ответ (не принят) подходит для моих потребностей:
print(os.getcwd())
/дома/Ubuntu/ноутбуки