Estoy en un servidor Jupyter Notebook (v4.2.2) con Python 3.4 .2 y quiero usar el nombre global __file__
, porque el cuaderno será clonado de otros usuarios y en una sección tengo que ejecutar:
def __init__( self, trainingSamplesFolder="muestras", maskFolder="máscaras"): self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self, path): if os.path.isabs( ruta): return ruta else: return os.path.join(os.path.dirname(__file__), ruta)
El __getAbsPath(self, ruta)
comprueba si un parámetro path
es una ruta relativa o absoluta y devuelve la versión absoluta de path
. Así puedo usar la path
devuelta de forma segura más adelante.
Pero me sale el error
NameError: el nombre
"__file__"
no está definido
I buscado para este error en línea y encontré la "solución" que debería usar mejor sys.argv[0]
, pero print(sys.argv[0])
regresa
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Pero la ubicación correcta del cuaderno debería ser /home/ubuntu/notebooks/
.
Gracias por la referencia ¿Cómo obtengo el nombre actual de IPython Notebook de Martijn Pieters (comentarios) la última respuesta (no aceptada) se ajusta perfectamente a mi necesita:
print(os.getcwd())
/home/ubuntu/notebooks