web-dev-qa-db-fra.com

Python pathlib obtenir le chemin relatif parent

Considérez les Path suivants:

import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')

Comment puis-je extraire la chaîne exacte "documents\documents importants" de ce Path?

Je sais que cet exemple semble idiot, le vrai contexte ici est de traduire un fichier local en un lien de téléchargement à distance.

4
Mojimi

Utilisez la méthode PurePath.relative_to() pour produire un chemin relatif.

Vous n'étiez pas très clair sur la façon dont le chemin de base est déterminé; voici deux options:

secondparent = path.parent.parent
homedir = pathlib.Path(r'C:\users\user1')

puis utilisez simplement str() sur le résultat path.relative_to(secondparent) ou path.relative_to(homedir).

Démo:

>>> import pathlib
>>> path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
>>> secondparent = path.parent.parent
>>> homedir = pathlib.Path(r'C:\users\user1')
>>> str(path.relative_to(secondparent))
'documents\\importantdocuments'
>>> str(path.relative_to(homedir))
'documents\\importantdocuments'
6
Martijn Pieters

Cela fonctionne sur n'importe quel système d'exploitation et chaque version de Python:

import os
os.path.join(os.path.basename(os.path.dirname(p)),os.path.basename(p))

Cela fonctionne sur python 3:

str(p.relative_to(p.parent.parent))
0
Benoît Pilatte

Vous pouvez utiliser . Parts :

import pathlib
path = pathlib.PureWindowsPath(r'C:\users\user1\documents\importantdocuments')
print ('/'.join(path.parts[-2:]))

Tirages:

'documents/importantdocuments'
0
Maurice Meyer