Я использую сервер 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 os.path.join(os.path.dirname(__file__), path)
The __getAbsPath(self, path)
проверяет, является ли параметр path
относительным или абсолютным путем, и возвращает абсолютную версию path
, поэтому я могу безопасно использовать возвращенный path
позже.
Но я получаю сообщение об ошибке
NameError: имя
"__file__"
не определено
Я искал эту ошибку в Интернете и нашел «решение», что мне лучше использовать sys.argv[0]
, но print(sys.argv[0])
возвращает
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Но правильное расположение блокнота должно быть /home/ubuntu/notebooks/
.
Спасибо за ссылку Как мне получить текущее имя блокнота IPython от Martijn Pieters (комментарии), последний ответ (не принят) идеально подходит для моего требуется:
print(os.getcwd())
/home/ubuntu/notebooks