Je suis sur un serveur Jupyter Notebook (v4.2.2) avec Python 3.4 .2 et je souhaite utiliser le nom global __file__
, car le notebook sera cloné à partir d'autres utilisateurs et dans une section, je dois exécuter :
def __init__( self, trainingSamplesFolder="samples", maskFolder="masks") : self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self, path) : si os.path.isabs( path) : return path else : return os.path.join(os.path.dirname(__file__), path)
Le __getAbsPath(self, path)
vérifie si un paramètre path
est un chemin relatif ou absolu et renvoie la version absolue de path
. Ainsi, je peux utiliser le path
renvoyé en toute sécurité plus tard.
Mais j'obtiens l'erreur
NameError : le nom
"__file__"
n'est pas défini
Je recherché cette erreur en ligne et j'ai trouvé la "solution" que je devrais mieux utiliser sys.argv[0]
, mais print(sys.argv[0])
renvoie
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Mais l'emplacement correct du notebook doit être /home/ubuntu/notebooks/
.
Merci pour la référence Comment puis-je obtenir le nom actuel du notebook IPython de Martijn Pieters (commentaires) la dernière réponse (non acceptée) convient parfaitement à mon nécessite :
print(os.getcwd())
/home/ubuntu/notebooks