16 Stimmen

Wie kann man in Python feststellen, ob eine Datei älter als 3 Monate ist?

Ich bin neugierig, wie man die Zeit in Python manipulieren kann. Ich kann das (zuletzt geänderte) Alter einer Datei mit der os.path.getmtime() Funktion als solche:

import os.path, time    

os.path.getmtime(oldLoc)

Ich muss eine Art Test durchführen, um festzustellen, ob dieser Zeitpunkt innerhalb der letzten drei Monate liegt oder nicht, aber ich bin völlig verwirrt von all den verfügbaren Zeitoptionen in Python.

Kann jemand einen Einblick geben? Mit freundlichen Grüßen.

29voto

time.time() - os.path.getmtime(oldLoc) > (3 * 30 * 24 * 60 * 60)

26voto

Senthil Kumaran Punkte 50813

Der Klarheit halber können Sie hier ein wenig Datumsarithmetik verwenden.

>>> import datetime
>>> today = datetime.datetime.today()
>>> modified_date = datetime.datetime.fromtimestamp(os.path.getmtime('yourfile'))
>>> duration = today - modified_date
>>> duration.days > 90 # approximation again. there is no direct support for months.
True

6voto

jfs Punkte 370717

Um herauszufinden, ob eine Datei älter als 3 Kalendermonate ist, können Sie Folgendes verwenden dateutil.relativedelta :

#!/usr/bin/env python
import os
from datetime import datetime
from dateutil.relativedelta import relativedelta # $ pip install python-dateutil

three_months_ago = datetime.now() - relativedelta(months=3)
file_time = datetime.fromtimestamp(os.path.getmtime(filename))
if file_time < three_months_ago:
    print("%s is older than 3 months" % filename)

Die genaue Anzahl der Tage in "letzten 3 Monaten" kann in diesem Fall von 90 Tagen abweichen. Wenn Sie stattdessen genau 90 Tage benötigen:

from datetime import datetime, timedelta

three_months_ago = datetime.now() - timedelta(days=90)

Wenn Sie die Änderungen des lokalen utc-Offsets berücksichtigen wollen, siehe Feststellen, ob 24 Stunden zwischen zwei Datumsangaben vergangen sind - Python .

4voto

Pavan Gupta Punkte 14713

Ich habe nach etwas Ähnlichem gesucht und bin auf diese alternative Lösung gestoßen:

from os import path
from datetime import datetime, timedelta

two_days_ago = datetime.now() - timedelta(days=2)
filetime = datetime.fromtimestamp(path.getctime(file))

if filetime < two_days_ago:
  print "File is more than two days old"

2voto

ghostdog74 Punkte 305138

1 Tag = 24 Stunden = 86400 Sekunden. Dann sind 3 Monate ungefähr 90 Tage, was 90 * 86400 Sekunden entspricht. Sie können diese Informationen verwenden, um Zeit zu addieren/subtrahieren. Oder Sie können das Python-Programm ausprobieren datetime Modul für Datumsmathematik. (insbesondere Timedelta)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X