Sono su un server Jupyter Notebook (v4.2.2) con Python 3.4 .2 e voglio usare il nome globale __file__
, perché il notebook verrà clonato da altri utenti e in una sezione devo eseguire:
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( percorso): percorso di ritorno else: ritorno os.path.join(os.path.dirname(__file__), percorso)
Il __getAbsPath(self, percorso)
controlla se un parametro percorso
è un percorso relativo o assoluto e restituisce la versione assoluta di percorso
. Quindi posso usare il percorso
restituito in modo sicuro in seguito.
Ma ricevo l'errore
NameError: name
"__file__"
non è definito
I Cercato questo errore online e ho trovato la "soluzione" che dovrei usare meglio sys.argv[0]
, ma print(sys.argv[0])
restituisce
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Ma la posizione corretta del notebook dovrebbe essere /home/ubuntu/notebooks/
.
Grazie per il riferimento Come ottengo il nome attuale del notebook IPython da Martijn Pieters (commenti) l'ultima risposta (non accettata) si adatta perfettamente al mio esigenze:
print(os.getcwd())
/home/ubuntu/notebooks