python - 为什么 pathlib.Path(__file__).parent.parent 对我的工作目录敏感?
问题描述
我有一个包含两个目录的脚本。
❯ tree
.
└── foo
└── bar
└── test.py
❯ cd foo/bar
❯ cat test.py
from pathlib import Path
print(Path(__file__).parent)
print(Path(__file__).parent.parent)
当我从包含它的目录运行它时,PathLib 认为文件的祖父母与其父文件相同。
❯ python test.py
. # <-- same
. # <-- directories
但是当我从顶层运行它时,PathLib 行为正确。
❯ cd ../..
❯ python foo/bar/test.py
foo/bar # <-- different
foo # <-- directories
我是对 PathLib 的 API 有误解,还是有其他原因导致其输出对我的工作目录敏感?
解决方案
您需要调用Path.resolve()
以使您的路径成为绝对路径(包括所有父目录并删除所有符号链接的完整路径)
from pathlib import Path
print(Path(__file__).resolve().parent)
print(Path(__file__).resolve().parent.parent)
这将导致结果包含每个目录的整个路径,但无论从何处调用该行为都将起作用
推荐阅读
- python - 如何在 Python 和 C 中使用三角函数在 GMP/MPFR 中实现非常高的精度?
- android - AgentDetailsActivityBindingImpl 类中所需的 DataBindingComponent 为空
- ruby-on-rails - 是否可以从 image_pack_tag 获取图像的 URL?
- node.js - POST 请求不起作用 - 使用 Mongoose 的 MongDB 和 Express JS
- python - Pandas - 一组跨多个列的滚动平均值;大数据框
- wordpress - WordPress 上的游戏商店部署
- javascript - 在javascript中导入webassembly模块的正确方法是什么
- javascript - 为什么更新的状态没有登录控制台
- java - 我的 logcat 到底是什么意思,我该如何解决?
- python - 尝试拆分为训练/测试集时未找到 X 索引