Ich bin auf einem Jupyter Notebook Server (v4.2.2) mit Python 3.4.2 und ich den globalen Namen __file__
, verwenden möchten, weil das Notebook wird von anderen Benutzern und in einem geklont werden Abschnitt ich habe laufen:__file__ hat exisit nicht in Jupyter Notebook
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)
die __getAbsPath(self, path)
prüft, ob ein path
param ein relativer oder absoluter Pfad ist und gibt die absolute Version von path
. So kann ich die zurückgegebenen path
sicher später verwenden.
aber ich habe den Fehler
NameError: name
'__file__'
is not defined
ich online für diesen Fehler gesucht und gefunden, die „Lösung“, die ich besser sys.argv[0]
verwenden soll, aber print(sys.argv[0])
kehrt
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Aber den richtigen Notebook-Standort sollte /home/ubuntu/notebooks/
sein.
Danke für den Hinweis How do I get the current IPython Notebook name von Martijn Pieters (Kommentare) die letzte Antwort (nicht akzeptiert) passt perfekt für meine Bedürfnisse:
print(os.getcwd())
/home/ubuntu/notebooks
'__file__' * bis * Module und Python-Skripte gilt nicht für Notebooks. Die Antworten, die Sie gefunden haben, gelten hier nicht. –
[Wie bekomme ich den aktuellen IPython Notebook-Namen] (http://StackOverflow.com/Q/12544056) sieht relevanter aus? –