Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Dateierstellungs- und Änderungszeiten für verschiedene Betriebssysteme zuverlässig ermitteln?

Wie kann ich die Dateierstellungs- und Änderungszeiten für verschiedene Betriebssysteme zuverlässig ermitteln?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 19:40:12708Durchsuche

How Can I Reliably Get File Creation and Modification Times Across Different Operating Systems?

Plattformübergreifendes Abrufen von Dateierstellungs- und Änderungsdatum/-zeit

Das Abrufen der Dateierstellungs- und Änderungsdaten/-zeiten über verschiedene Betriebssysteme hinweg kann erfolgen eine komplexe Aufgabe.

Änderung Daten

Das plattformübergreifende Abrufen von Dateiänderungsdaten ist relativ einfach mit os.path.getmtime(), das den Unix-Zeitstempel der letzten Änderung bereitstellt.

Erstellungsdaten

Für Dateierstellungsdaten wird der Prozess aufgrund der Plattformabhängigkeit komplizierter Implementierungen:

  • Windows: Windows speichert das Erstellungsdatum im ctime der Datei. Der Zugriff kann über os.path.getctime() oder das .st_ctime-Attribut von os.stat() erfolgen.
  • Mac: Auf Mac und bestimmten Unix-basierten Betriebssystemen die .st_birthtime Das Attribut von os.stat() liefert das Erstellungsdatum.
  • Linux: Linux verfügt derzeit nicht über eine standardisierte Möglichkeit, Erstellungsdaten abzurufen. Während einige Dateisysteme wie ext4 die Daten speichern, bietet der Linux-Kernel keine direkte Methode für den Zugriff darauf. Die nächstgelegene Alternative ist die mtime der Datei, die die letzte Inhaltsänderung angibt.

Plattformübergreifender Code

Durch die Kombination dieser plattformspezifischen Ansätze entsteht ein plattformübergreifender Code. Das Code-Snippet der Plattform lautet wie folgt:

import os
import platform

def creation_date(path_to_file):
    """
    Try to get the date that a file was created, falling back to when it was
    last modified if that isn't possible.
    See http://stackoverflow.com/a/39501288/1709587 for explanation.
    """
    if platform.system() == 'Windows':
        return os.path.getctime(path_to_file)
    else:
        stat = os.stat(path_to_file)
        try:
            return stat.st_birthtime
        except AttributeError:
            # We're probably on Linux. No easy way to get creation dates here,
            # so we'll settle for when its content was last modified.
            return stat.st_mtime

Dieser Code überprüft zunächst die Plattform, um die entsprechende Methode anzuwenden. Unter Windows wird os.path.getctime() verwendet, während auf Mac und einigen Unix-basierten Betriebssystemen versucht wird, das Erstellungsdatum mithilfe von .st_birthtime abzurufen. Für Linux wird auf das über .st_mtime erhaltene Änderungsdatum zurückgegriffen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Dateierstellungs- und Änderungszeiten für verschiedene Betriebssysteme zuverlässig ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn