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.
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'
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))
Vous pouvez utiliser . Parts :
import pathlib
path = pathlib.PureWindowsPath(r'C:\users\user1\documents\importantdocuments')
print ('/'.join(path.parts[-2:]))
Tirages:
'documents/importantdocuments'