Comparer deux chemins en python
envisager,
path1 = "c:/fold1/fold2"
list_of_paths = ["c:\\fold1\\fold2","c:\\temp\\temp123"]
if path1 in list_of_paths:
print "found"
- Je m'attendre si l'instruction pour retourner vrai, mais il a la valeur False
puisque c'est une chaîne de comparaison de
comment comparer deux chemins, indépendamment de l'avant ou vers l'arrière, barre oblique, il a !
je ne préfère utiliser la fonction remplacer et de les convertir à la fois de la chaîne de comman format
source d'informationauteur Jagannath Ks
Vous devez vous connecter pour publier un commentaire.
Utilisation
os.chemin d'accès.normpath
pour convertirc:/fold1/fold2
àc:\fold1\fold2
:os.path.normpath(path1) in map(os.path.normpath, list_of_paths)
fonctionne aussi, mais il va construire une liste avec chemin d'accès complet, même s'il y a un match dans le milieu. (En Python 2.x)Sur Windows, vous doit utilisation
os.chemin d'accès.normcase
pour comparer les chemins parce que sur Windows, les chemins ne sont pas sensibles à la casse.La
os.path
module contient plusieurs fonctions afin de normaliser les chemins de fichiers, de sorte que l'équivalent des chemins de normaliser la même chaîne. Vous pouveznormpath
normcase
abspath
samefile
ou un autre outil.Toutes ces réponses mention
os.path.normpath
mais aucun d'entre eux mentionnentos.chemin d'accès.realpath
:Alors:
Stocker les list_of_paths comme une liste au lieu d'une chaîne:
Ensuite divisé chemin d'accès donné par '/' ou '\' (celui qui est présent), puis utilisez la
in
mot-clé.Utilisation
os.path.normpath
à accepter les chemins avant de les comparer. Par exemple:Si vous utilisez python-3vous pouvez utiliser pathlib pour atteindre votre objectif: