__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__'
is not defined
我在网上搜索了这个错误并发现了一个“解决方案”,即最好使用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())
/家/乌班图/笔记本
__file__
只适用于模块和Python脚本,而不适用于notebook。你找到的答案在这里不适用。 - Martijn Pieters