如何解析相对于任何目录的相对路径

格里斯玛

我知道如何解析'..\input\file\hello.txt'相对于当前工作目录的相对路径,例如绝对路径:

from pathlib import Path

rel_path = Path(r'..\input\file\hello.txt')
print(f'Absolute path: {rel_path.absolute()}'

输出时cwdC:\project\source\

C:\project\source\..\input\file\hello.txt

我也知道可以.resolve()用来完全解决间接寻址:

from pathlib import Path

rel_path = Path(r'..\input\file\hello.txt')
print(f'Resolved path: {rel_path.resolve()}'

输出时cwdC:\project\source\

C:\project\input\file\hello.txt

如何在不更改当前工作目录(如果有)的情况下解析相对于任何路径的路径?即使必须更改当前的工作目录,如何完全解析实际上不存在的路径?(因为.resolve()仅适用于现有对象)

例如,使用虚构get_relative_to()

get_relative_to(r'..\input\file\hello.txt', r'X:\bogus\folder')

理想地会回来 'X:\bogus\input\file\hello.txt'

三亚什

从3.6版开始,resolve会提供一个参数strictstrict=False即使该路径不存在也可以解析。在3.8.0中测试的示例:

from pathlib import Path


def get_relative_to(path1, path2):
    return (path2 / path1).resolve(strict=False)


print(
    get_relative_to(
        Path(r'..\input\file\hello.txt'),
        Path(r'X:\bogus\folder'),
    )
)

# X:\bogus\input\file\hello.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章