踩过的坑:__file__、__package__和__name__
不说废话,直接上示例结构图
Path.py内容如下:
import os
path1 = os.path.dirname(os.path.abspath(__file__))
path2 = os.path.abspath(__package__)
path3 = os.path.dirname(os.path.abspath(__name__))
if __name__ == "__main__":
print(path1)
print(path2)
print(path3)
运行Path.py结果如下:
TestPath.py内容如下:
from package1.Path import path1, path2, path3
if __name__ == '__main__':
print(path1)
print(path2)
print(path3)
运行TestPath.py结果如下:
结论
- 使用os.path获取__file__的路径,始终是获得的初始文件的路径。
- 使用os.path获取__package__的路径,获得的是初始文件被引用现状的路径。
\package2\package1 表示package1被引用到了package2里面。
- 使用os.path获取__name__的路径,则获得的是引用文件的路径。