Estou em um servidor Jupyter Notebook (v4.2.2) com Python 3.4 .2 e quero usar o nome global __file__
, pois o notebook será clonado de outros usuários e em uma seção tenho que executar:
def __init__( self, trainingSamplesFolder="samples", maskFolder="masks"): self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self,): if os.path.isabs( path): return path else: return os.path.join(os.path.dirname(__file__), path)
O __getAbsPath(self, path)
verifica se um parâmetro path
é um caminho relativo ou absoluto e retorna a versão absoluta de path
. Assim, posso usar o path
retornado com segurança posteriormente.
Mas recebo o erro
NameError: name
"__file__"
não está definido
I procurou por este erro online e encontrei a "solução" que eu deveria usar melhor sys.argv[0]
, mas print(sys.argv[0])
retorna
/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py
Mas o local correto do notebook deve be /home/ubuntu/notebooks/
.
Obrigado pela referência Como obtenho o nome atual do IPython Notebook de Martijn Pieters (comentários) a última resposta (não aceita) se encaixa perfeitamente no meu precisa:
print(os.getcwd())
/home/ubuntu/notebooks