微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pathlib 获取基本路径,给定绝对路径和相对路径

如何解决pathlib 获取基本路径,给定绝对路径和相对路径

我有

  • A = Path('/a/b/.../m/n/.../z.txt')
  • B = Path('n/.../z.txt')

我想要:

  • C = Path('/a/b/.../m')

对于这些路径之间的三个关系中的两个,我们有明确定义的可靠函数

  • B == A.relative_to(C)
  • A == C / B
  • C == A.unkNown_operator(B)

在给定 CA 的情况下,是否有一种干净、准确的方法来计算 B?或者:第三个遗漏的手术是什么?还是我必须求助于字符串操作?

解决方法

使用 str.removesuffix(自 py3.9)将路径作为字符串操作怎么样

A = Path('/a/b/.../m/n/.../z.txt')
B = Path('n/.../z.txt')
C = Path(A.as_posix().removesuffix(B.as_posix()))
print(C)  # /a/b/.../m

或者从 A 的末尾删除部分直到 A == C/B

C = Path(A.as_posix())
while C != Path("/") and not B == A.relative_to(C):
    C = C.parent
,

您可以使用 parentspathlib.Path 字段:

C = (A.parents[len(B.parents)-1]
       if 1 <= len(B.parents) <= len(A.parents) else None)
if C is None or A != C.joinpath(B):
    # B is not a suffix of A,proceed accordingly

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。