3 votes

Comment préfixer un pathlib.Path de Python avec un autre chemin ?

J'ai un pathlib.Path('/etc') . Si je dois le faire précéder de pathlib.Path('/mnt/chroot') et faire quelque chose comme :

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

Je finis par.. : PosixPath('/etc') vraisemblablement parce que les deux Path sont des chemins absolus et ne peuvent pas être concaténés.

Je peux trouver une solution avec quelque chose comme.. :

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

Mais c'est un peu long, et c'est du bricolage. Existe-t-il une méthode plus simple et plus appropriée ?

7voto

Kyle Parsons Points 506

Vous pouvez tourner Path('/etc') en un chemin relatif avec l'option relative_to méthode :

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

1voto

Quber Points 69

Je souhaite simplement compléter la réponse de Kyle en proposant une solution multiplateforme. Il obtient dynamiquement la racine du système de fichiers.

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

Je ne sais pas si cela apporte quelque chose, mais c'est ainsi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X