Ich arbeite auf einem Jupyter Notebook-Server (v4.2.2) mit Python 3.4 .2 und ich möchte den globalen Namen __file__
verwenden, da das Notebook von anderen Benutzern geklont wird und ich in einem Abschnitt Folgendes ausführen muss:
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( Pfad): Rückgabepfad sonst: Rückgabe os.path.join(os.path.dirname(__file__), path)
Der __getAbsPath(self, path)
prüft, ob ein path
-Parameter ein relativer oder absoluter Pfad ist und gibt die absolute Version von path
zurück, damit ich den zurückgegebenen path
später sicher verwenden kann.
Aber ich bekomme die Fehlermeldung
NameError: name
"__file__"
is not defined
I gesucht für diesen Fehler online und fand die "Lösung", dass ich besser sys.argv[0]
verwenden sollte, aber print(sys.argv[0])
zurückgibt
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Aber der richtige Notebook-Speicherort sollte B. /home/ubuntu/notebooks/
sein.
Danke für die Referenz Wie erhalte ich den aktuellen IPython-Notebook-Namen von Martijn Pieters (Kommentare) die letzte Antwort (nicht akzeptiert) passt perfekt zu meinem benötigt:
print(os.getcwd())
/home/ubuntu/notebooks