__file__은 Jupyter 노트북에 존재하지 않습니다

| | | | | | | | | | | | | | | | | | |

저는 Python 3.4가 설치된 Jupyter Notebook 서버(v4.2.2)를 사용 중입니다. .2 및 전역 이름 __file__을 사용하고 싶습니다. 노트북이 다른 사용자로부터 복제되고 한 섹션에서 다음을 실행해야 하기 때문입니다.

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) 

__getAbsPath(self, path) path 매개변수가 상대 경로인지 절대 경로인지 확인하고 path의 절대 버전을 반환하므로 나중에 반환된 path를 안전하게 사용할 수 있습니다.

하지만 오류가 발생합니다.

NameError: name "__file__"이(가) 정의되지 않았습니다.

I 을 찾아 보았다 이 오류는 온라인에서 sys.argv[0]를 사용하는 것이 더 나은 "해결책"을 찾았지만 print(sys.argv[0])

를 반환합니다.

/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py

하지만 올바른 노트북 위치는 /home/ubuntu/notebooks/가 됩니다.

참고해 주셔서 감사합니다.Martijn Pieters(코멘트)의 현재 IPython Notebook 이름을 얻으려면 마지막 답변(허용되지 않음)이 나에게 딱 맞습니다. 필요:

print(os.getcwd())

/home/ubuntu/notebooks