Emulation des os.path.samefile-Verhaltens unter Windows und Python 2.7?

9

Bei zwei gegebenen Pfaden muss ich vergleichen, ob sie auf dieselbe Datei zeigen oder nicht. In Unix kann dies mit os.path.samefile geschehen, aber wie die Dokumentation angibt, ist es in Windows nicht verfügbar. Was ist der beste Weg, um diese Funktion zu emulieren? Es muss keinen häufigen Fall emulieren. In meinem Fall gibt es die folgenden Vereinfachungen:

  • Pfade enthalten keine symbolischen Links.
  • Dateien befinden sich auf derselben lokalen Festplatte.

Jetzt verwende ich Folgendes:

%Vor%

Ist das OK?

    
Nikolay Polivanov 17.01.2012, 10:12
quelle

3 Antworten

4

Nach issue # 5985 befinden sich die os.path.samefile und os.path.sameopenfile jetzt in py3k. Ich habe dies in Python 3.3.0 überprüft.

Für ältere Versionen von Python gibt es einen Weg, der die GetFileInformationByHandle Funktion:

see_if_two_files_are_the_same_file

    
Vanja 09.10.2012 08:46
quelle
3

Der Systemaufruf os.stat gibt ein Tupel mit vielen Informationen über jede Datei zurück - einschließlich Zeitstempel für Erstellung und letzte Änderung, Größe, Dateiattribute. Die Wahrscheinlichkeit, dass verschiedene Dateien die gleichen Parameter haben, ist sehr gering. Ich denke, es ist sehr vernünftig zu tun:

%Vor%     
jsbueno 17.01.2012 12:20
quelle
2

Der eigentliche Anwendungsfall von os.path.samefile sind keine symbolischen Links, sondern harte Links. os.path.samefile(a, b) gibt True zurück, wenn a und b beide feste Links zu derselben Datei sind. Sie haben möglicherweise nicht den gleichen Weg.

    
asmeurer 26.07.2013 20:53
quelle

Tags und Links