path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
print(path)
>>> /Users/***/Desktop/***/templates
path = os.path.abspath('templates')
print(path)
>>> /Users/***/Desktop/***/templates
我对此感到困惑,有人可以解释一下吗?
答案 0 :(得分:1)
要注意区别,您必须保存文件并从其他路径运行它:
$ cat > path.py << EOF
import os
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
print(path)
path = os.path.abspath('templates')
print(path)
EOF
输出:
$ python path.py
/home/.../templates
/home/.../templates
但是如果你从另一条路径运行它:
$ cd another_path
~/another_path$ python ../path.py
/home/.../templates
/home/.../another_path/templates
第一个示例返回相对于文件的路径,但第二个示例相对于当前工作目录(getcwd
)。
答案 1 :(得分:0)
您的第一个示例从显式文件名(存储在__file__
中的值)中获取路径,第二个示例在您执行Python的位置依赖更多隐式从
当值一致时,这些方法似乎是可以互换的,在您的示例中似乎是这种情况,但如果有问题的文件位于应用程序体系结构的某个更深处,或者是应用程序外部的另一个模块的一部分,那么得到不同的东西。