我在使用Python 3.4.2的Jupyter Notebook服务器(v4.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:名称
'__file__'
未定义
我在网上搜索了此错误,并找到了最好使用的“解决方案” 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
__file__
适用于模块和Python脚本,不适用于笔记本。您找到的答案不适用于此处。