Я перебуваю на сервері 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: ім'я
'__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
__file__
стосується модулів та скриптів Python , а не ноутбуків. Знайдені вами відповіді тут не застосовуються.