Vergleich von zwei Pfaden in python
betrachten,
path1 = "c:/fold1/fold2"
list_of_paths = ["c:\\fold1\\fold2","c:\\temp\\temp123"]
if path1 in list_of_paths:
print "found"
Ich erwarten, wenn-Anweisung den Wert true zurück, sondern es zu False ausgewertet wird
da ist die string-Vergleich
vergleichen von zwei Pfaden unabhängig von der vorwärts-oder rückwärts-Schrägstrich hat !
i dont benutze lieber ersetzen-Funktion und konvertiert string zu Komman-format
InformationsquelleAutor Jagannath Ks | 2014-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
os.Pfad.normpath
zu konvertierenc:/fold1/fold2
zuc:\fold1\fold2
:os.path.normpath(path1) in map(os.path.normpath, list_of_paths)
funktioniert auch, aber es wird erstellen Sie eine Liste mit gesamten Pfad posten, obwohl es für die Partie in der Mitte. (In Python 2.x)Unter Windows, Sie muss verwenden
os.Pfad.normcase
zu vergleichen Pfade, da Sie auf Windows-Pfade sind nicht case-sensitive.Aber der OP sagt, dass es jeder sein kann, der Schrägstriche an jedem Ort
Danke für den Kommentar. Ich habe eine version, die mit solchen Fall.
Gerne 🙂
Ich denke, das Sie verwenden möchten
os.path.realpath
, um Fälle zu erfassen, wie @cbare erwähnt.InformationsquelleAutor falsetru
Den
os.path
Modul enthält verschiedene Funktionen zum normalisieren von Datei die Pfade so, dass die gleichwertigen Pfade normalisieren, um die gleiche Zeichenfolge. Sie Mai wollennormpath
,normcase
,abspath
,samefile
oder einem anderen tool.InformationsquelleAutor user2357112
Alle diese Antworten erwähnen
os.path.normpath
, aber keiner von Ihnen erwähntos.Pfad.realpath
:Also dann:
InformationsquelleAutor Jonathon Reinhart
Wenn du mit python-3, können Sie pathlib Ihr Ziel zu erreichen:
InformationsquelleAutor pkowalczyk
Speichern der list_of_paths als Liste statt als string zu haben:
Dann split gegebenen Pfad durch '/' oder '\' (je nachdem was vorhanden ist) und verwenden Sie dann die
in
Stichwort.Was ist das bearbeitet?
InformationsquelleAutor Aswin Murugesh
Verwenden
os.path.normpath
zu kanonisieren die Pfade, bevor Sie miteinander verglichen werden. Zum Beispiel:Das hängt von den genauen Anforderungen. Seit der OP beantragt-Vergleich "unabhängig von der vorwärts-oder rückwärts-Schrägstrich", die
normpath
erfüllt. Es ist natürlich möglich, dass der OP misstated Ihre Anforderungen zwei und ein halb Jahre her, aber das wäre raten.InformationsquelleAutor user4815162342