如何在 Python pathlib.Path 前加上另一条路径?

How can you prefix a Python pathlib.Path with another path?

我有一个pathlib.Path('/etc')。 如果我需要在它前面加上 pathlib.Path('/mnt/chroot') 并执行类似的操作:

Path('/mnt/chroot') / Path('/etc')

我最后得到:PosixPath('/etc'),大概是因为 Path 都是绝对路径,不能连接起来。

我可以用类似的东西拼凑出一个解决方案:

Path('/mnt/chroot') / str(Path('/etc')).removeprefix('/')

但那是冗长的、老掉牙的。有没有更简单、正确的方法来做到这一点?

您可以使用relative_to方法将Path('/etc')变成相对路径:

Path('/mnt/chroot') / Path('/etc').relative_to('/')

我只想通过跨平台解决方案扩展 Kyle 的回答。它动态获取文件系统的根目录。

root = os.path.abspath(".").split(os.path.sep)[0] + os.path.sep
path = Path("/mnt/chroot") / Path("/etc").relative_to(root)

不知道这是否增加了什么,但在这里。