Wie erhält man Dateierstellungs- und -änderungsdatum/-zeiten in Python?

Ich habe ein Skript, das einige Dinge auf der Grundlage von Dateierstellungs- und -änderungsdaten tun muss, aber unter Linux und Windows laufen muss.

Was ist der beste plattformübergreifende Weg, um Dateierstellungs- und -änderungsdaten in Python zu erhalten?

Sie haben mehrere Möglichkeiten. Zum einen können Sie die Funktionen os.path.getmtime und os.path.getctime verwenden:

import os.path, time
print("last modified: %s" % time.ctime(os.path.getmtime(file)))
print("created: %s" % time.ctime(os.path.getctime(file)))

Die andere Möglichkeit ist die Verwendung von os.stat:

import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print("last modified: %s" % time.ctime(mtime))

Hinweis: ctime() bezieht sich nicht auf die Erstellungszeit auf *nix-Systemen, sondern auf das letzte Mal, als die Inode-Daten geändert wurden. (Dank an kojiro, der diese Tatsache in den Kommentaren durch einen Link zu einem interessanten Blogpost verdeutlicht hat)

Kommentare (3)

os.stat https://docs.python.org/2/library/stat.html#module-stat

edit: In neuerem Code sollten Sie wahrscheinlich os.path.getmtime() verwenden (danke Christian Oudard) aber beachten Sie, dass es einen Fließkommawert von time_t mit Sekundenbruchteilen zurückgibt (wenn Ihr Betriebssystem dies unterstützt)

Kommentare (2)

Es gibt zwei Methoden, um die Mod-Zeit zu erhalten, os.path.getmtime() oder os.stat(), aber die ctime ist plattformübergreifend nicht zuverlässig (siehe unten).

os.path.getmtime()

getmtime(pfad)
Gibt die Zeit der letzten Änderung des Pfades zurück. Der Rückgabewert ist eine Zahl, die die Anzahl der Sekunden seit der Epoche angibt (siehe das Zeitmodul). Löst os.error aus, wenn die Datei nicht existiert oder unzugänglich ist. Neu in Version 1.5.2. Geändert in Version 2.3: Wenn os.stat_float_times() True zurückgibt, ist das Ergebnis eine Fließkommazahl.

os.stat()

stat(pfad)
Durchführen eines stat()-Systemaufrufs für den angegebenen Pfad. Der Rückgabewert ist ein Objekt, dessen Attribute den Mitgliedern der stat-Struktur entsprechen, nämlich: st_mode (Schutz bits), st_ino (Inode-Nummer), st_dev (Gerät), st_nlink (Anzahl der Hardlinks), st_uid (Benutzer-ID des Eigentümers), st_gid (Gruppen-ID des Eigentümers), st_size (Größe der Datei in Bytes), st_atime (Zeitpunkt des letzten Zugriffs), st_mtime (Zeitpunkt der letzten Inhalts Änderung), st_ctime (plattformabhängig; Zeitpunkt der letzten Änderung der Metadaten unter Unix oder der Zeitpunkt der Erstellung unter Windows):

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>> 

Im obigen Beispiel würden Sie statinfo.st_mtime oder statinfo.st_ctime verwenden, um die mtime bzw. ctime zu erhalten.

Kommentare (0)