Reputation: 2922
I have a pathlib.Path('/etc')
.
If I need to prefix it with pathlib.Path('/mnt/chroot')
and do something like:
Path('/mnt/chroot') / Path('/etc')
I just end up with: PosixPath('/etc')
, presumably because both Path
's are absolute paths, and can't be concatenated.
I can hack together a solution with something like:
Path('/mnt/chroot') / str(Path('/etc')).removeprefix('/')
But that is long-winded, and hackish. Is there a simpler, proper way to do this?
Upvotes: 3
Views: 2326
Reputation: 79
I just want to expand on Kyle's answer with a cross platform solution. It dynamically gets the root of the filesystem.
root = os.path.abspath(".").split(os.path.sep)[0] + os.path.sep
path = Path("/mnt/chroot") / Path("/etc").relative_to(root)
Do not know if this adds anything but here it is.
Upvotes: 1
Reputation: 1525
You can turn Path('/etc')
into a relative path with the relative_to
method:
Path('/mnt/chroot') / Path('/etc').relative_to('/')
Upvotes: 7