Python: Dateizugriffszeit (atime) setzen

English Deutsch

Siehe auch: Python: Dateiänderungszeit (mtime) setzen

Sie können os.utime() verwenden, um die Zugriffs- und Änderungszeiten von Dateien in Python zu setzen. Um nur die Zugriffszeit (atime) zu setzen, verwenden Sie dieses Snippet:

set_atime.py
# atime muss ein datetime sein
stat = os.stat(filename)
# times muss zwei Floats (Unix-Timestamps) enthalten: (atime, mtime)
os.utime(filename, times=(atime.timestamp(), stat.st_mtime))

Oder verwenden Sie diese Hilfsfunktion:

set_atime_util.py
from datetime import datetime
import os

def set_file_access_time(filename, atime):
    """
    Setzt die Zugriffszeit einer angegebenen Datei auf die angegebene atime.
    atime muss ein datetime-Objekt sein.
    """
    stat = os.stat(filename)
    mtime = stat.st_mtime
    os.utime(filename, times=(atime.timestamp(), mtime))

Verwendungsbeispiel:

set_atime_usage.py
# Setzt die Zugriffszeit von myfile.txt auf 1970-1-1, lässt die Änderungszeit unverändert
set_file_access_time("myfile.txt", datetime(1970, 1, 1, 0, 0, 0))

Falls Sie mit Python 2.x kompatibel sein müssen, verwenden Sie stattdessen diese Variante:

set_atime_py2_compat.py
from datetime import datetime
import os
import time

def datetime_to_timestamp(dt):
    return time.mktime(dt.timetuple()) + dt.microsecond/1e6

def set_file_access_time(filename, atime):
    """
    Setzt die Zugriffszeit einer angegebenen Datei auf die angegebene atime.
    atime muss ein datetime-Objekt sein.
    """
    stat = os.stat(filename)
    mtime = stat.st_mtime
    os.utime(filename, (datetime_to_timestamp(atime), mtime))

Siehe Python 2: datetime in Unix-Timestamp umwandeln und Python: AttributeError: datetime.datetime object has no attribute timestamp beheben für weitere Details zu diesem alternativen Ansatz.

Falls Sie die Möglichkeit haben, Python 3.x zu verwenden, empfehle ich die oben aufgeführte Python 3-Version, da sie viel lesbarer ist, weniger Code erfordert und (zum Zeitpunkt der Erstellung dieses Codes) Python 2 nur noch in wenigen Monaten abgeschaltet wird. Ich empfehle, Ihre Skripte so bald wie möglich mit Python 3-Kompatibilität zu aktualisieren wie viele andere Projekte bereits getan haben.


Check out similar posts by category: Python