Disons que j'ai deux chemins absolus. Je dois vérifier si l'emplacement auquel se réfère l'un des chemins est un descendant de l'autre. Si c'est le cas, je dois trouver le chemin relatif du descendant à partir de l'ancêtre. Quelle est la meilleure façon d'implémenter cela en Python ? Y a-t-il une bibliothèque dont je pourrais bénéficier ?
Réponse
Trop de publicités?Editer : Voir la réponse de jme pour la meilleure façon de procéder avec Python3.
En utilisant pathlib, vous avez la solution suivante :
Supposons que nous voulions vérifier si son
est un descendant de parent
et les deux sont Path
objets. Nous pouvons obtenir une liste des pièces dans le chemin avec list(parent.parts)
. Ensuite, il suffit de vérifier que le début du fils est égal à la liste des segments du parent.
>>> lparent = list(parent.parts)
>>> lson = list(son.parts)
>>> if lson[:len(lparent)] == lparent:
>>> ... #parent is a parent of son :)
Si vous voulez obtenir la partie restante, vous pouvez simplement faire
>>> ''.join(lson[len(lparent):])
Il s'agit d'une chaîne de caractères, mais vous pouvez bien entendu l'utiliser comme constructeur d'un autre objet Path.
- Réponses précédentes
- Plus de réponses