getmtime - Unterschied Festplatte, USB-Stick

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Flano
User
Beiträge: 43
Registriert: Sonntag 5. September 2004, 14:13

Die Datei "probe.txt" wurde auf Partition "C" (Festplatte) erstellt, dann ohne Modifikation
nach Partition "D" (Festplatte) und "G" (USB Stick) kopiert.
Warum bekommt man beim USB Stick immer eine andere Zeitausgabe?

Code: Alles auswählen

import os

source_C = r"C:\probe.txt" # Erstellt auf Festplatte Part. C
dest_D = r"D:\probe.txt" # Kopie Part. D
dest_G = r"G:\probe.txt" # Kopie USB-Stick

print(os.path.getmtime(source_C)) 
print(os.path.getmtime(dest_D))
print(os.path.getmtime(dest_G))
Ausgabe:
1414316294.2261965
1414316294.2261965
1414316296.0

Habe es auch unter Linux ausprobiert, auf unterschiedlichen Rechnern, USB Sticks,
oder in Programmiersprache "C" geschrieben, das Ergebnis ist immer gleich.
BlackJack

@Flano: Ich vermute mal der USB-Stick ist FAT-formatiert. Da hat diese Zeitangabe eine Auflösung von 2 Sekunden.
Flano
User
Beiträge: 43
Registriert: Sonntag 5. September 2004, 14:13

Ja die USB-Sticks sind FAT 32 formatiert. Wollte mit "getmtime" ermitteln, ob die Datei im Ordner auf dem USB-Stick identisch ist.
Dafür eignet sich wahrscheinlich das hashlib Modul (z.B. hashlib.md5) besser. Werde es damit probieren.

Danke!
BlackJack

@Flano: Da man die Zeiten verändern kann, ist das sowieso kein total sicherer Indikator. Auf der anderen Seite muss ja auch eine tatsächlich ”geänderte” Datei sich inhaltlich nicht geändert haben. Vergleichen müsste man also so oder so wenn sich die Zeitstempel unterscheiden.

Ob tatsächlich ein Hashwert Sinn macht, hängt von den Randbedingungen ab. Wenn man beispielsweise für den Vergleich immer beide Dateien komplett lesen muss, und jeden Hashwert nur *einmal* in einem Vergleich verwendet, dann kann man auch gleich ganz einfach die Dateien vergleichen ohne einen Hashwert. Der macht nur wirklich Sinn wenn er ein erneutes Lesen einer Datei verhindert. Und dann würde ich nicht mehr MD5 verwenden sondern einen der SHA-Algorithmen, zum Beispiel SHA256.

Bevor Du selbst etwas zum Vergleichen von Datei(en|inhalten) implementierst, könntest Du auch einen Blick in das `filecmp`-Modul aus der Standardbibliothek werfen.

Das erste Kriterium wäre übrigens die Dateigrösse, anhand derer man bei Unterschieden sehr einfach und ”billig” feststellen kann das zwei Dateien nicht gleich sind.
Flano
User
Beiträge: 43
Registriert: Sonntag 5. September 2004, 14:13

Die letzten beiden Ansätze gefallen mir gut!
Ich denke das ist für meinem Zweck vollkommen ausreichend.

Nochmal Danke!
Antworten