我一直看到引用说的话:
“人们用
__file__
做聪明的事”
主要是在python包装and packaging wars的上下文中。
猜猜我错过了什么,因为据我所知,这只是指定文件名和路径的模型的属性,如SO question
中所述 __file__
有什么特别之处,以及人们用它做“聪明事”的例子是什么?
答案 0 :(得分:2)
如果您希望通过将项目目录放在PYTHONPATH下来加载通过import
工作的代码,并且代码依赖于您存储在项目目录中的数据文件,则可以使用{{ 1}}获取项目位置并检索数据。
我喜欢通过__file__
加载我工作的所有内容,但是我的同事从命令行运行我在项目目录中提供的脚本。因此,在这些脚本中,我使用如下定义的import
函数来获取项目文件的正确位置,无论脚本如何运行:
getwd
当我通过import os
def getwd():
return os.path.dirname(__file__) if '__file__' in globals() else os.getcwd()
加载脚本时,import
返回脚本的目录。当我的同事从项目目录中的命令行运行脚本时,没有全局getwd
,__file__
只返回当前目录。