如何在 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)
不知道这是否增加了什么,但在这里。
我有一个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)
不知道这是否增加了什么,但在这里。