【问题标题】:Python's pathlib get parent's relative pathPython pathlib 获取父级相对路径
【发布时间】:2019-06-21 10:54:30
【问题描述】:

考虑以下Path

import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')

如何从Path 中提取确切的字符串documents\importantdocuments

我知道这个例子看起来很傻,这里真正的上下文是将本地文件转换为远程下载链接。

【问题讨论】:

  • 所以你想要它相对于第二个父目录?还是硬编码路径?
  • @MartijnPieters 我想要字符串documents\importantdocuments
  • 我知道。但是为什么是你的路径的那部分?是因为这些是路径的最后两部分吗?或者你在其他地方有Path(r'C:\users\user1'),这就是参考路径?
  • @MartijnPieters 因为我需要父文件夹的相对路径

标签: python python-3.x python-3.7 pathlib


【解决方案1】:

使用PurePath.relative_to() method 生成相对路径。

您不太清楚基本路径是如何确定的;这里有两个选择:

secondparent = path.parent.parent
homedir = pathlib.Path(r'C:\users\user1')

然后在path.relative_to(secondparent)path.relative_to(homedir) 结果上使用str()

演示:

>>> import pathlib
>>> path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
>>> secondparent = path.parent.parent
>>> homedir = pathlib.Path(r'C:\users\user1')
>>> str(path.relative_to(secondparent))
'documents\\importantdocuments'
>>> str(path.relative_to(homedir))
'documents\\importantdocuments'

【讨论】:

    【解决方案2】:

    这适用于任何操作系统和 Python 的每个版本:

    import os
    os.path.join(os.path.basename(os.path.dirname(p)),os.path.basename(p))
    

    这适用于 python 3:

    str(p.relative_to(p.parent.parent))
    

    【讨论】:

    • 他正在使用 pathlib,他没有要求替代。
    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2022-06-10
    • 2019-09-16
    相关资源
    最近更新 更多