如何解决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)
在给定 C
和 A
的情况下,是否有一种干净、准确的方法来计算 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
,
您可以使用 parents
的 pathlib.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 举报,一经查实,本站将立刻删除。