Jestem na serwerze Jupyter Notebook (wersja 4.2.2) z Pythonem 3.4 .2 i chcę użyć globalnej nazwy __file__
, ponieważ notatnik zostanie sklonowany od innych użytkowników iw jednej sekcji muszę uruchomić:
def __init__( self, trainingSamplesFolder="samples", maskFolder="masks"): self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self, path): if os(path.isab) ścieżka): zwróć ścieżkę else: zwróć os.path.join(os.path.dirname(__file__), ścieżka)
__getAbsPath(self, path)
sprawdza, czy parametr path
jest ścieżką względną lub bezwzględną i zwraca bezwzględną wersję path
. Dzięki temu mogę później bezpiecznie użyć zwróconej ścieżki
.
Ale pojawia się błąd
NameError: nazwa
"__file__"
nie jest zdefiniowana
I szukałem ten błąd online i znalazłem "rozwiązanie", które lepiej użyć sys.argv[0]
, ale print(sys.argv[0])
zwraca
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Ale prawidłowa lokalizacja notatnika powinna bądź /home/ubuntu/notebooks/
.
Dziękujemy za referencje Jak uzyskać aktualną nazwę notebooka IPython od Martijna Pietersa (komentarze) ostatnia odpowiedź (nie zaakceptowana) pasuje idealnie do mojego potrzeby:
print(os.getcwd())
/home/ubuntu/notebooks