Python: Dateiänderungszeit (mtime) setzen

English Deutsch

Siehe auch: Python: Dateizugriffszeit (atime) setzen

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

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

Oder verwenden Sie diese Hilfsfunktion:

set_mtime_util.py
from datetime import datetime
import os

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

Verwendungsbeispiel:

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

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

set_mtime_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_modification_time(filename, mtime):
    """
    Setzt die Änderungszeit einer angegebenen Datei auf die angegebene mtime.
    mtime muss ein datetime-Objekt sein.
    """
    stat = os.stat(filename)
    atime = stat.st_atime
    os.utime(filename, (atime, datetime_to_timestamp(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