11
votes

Comment voir si le fichier est plus âgé de 3 mois à Python?

Je suis curieux de manipuler le temps en python. Je peux obtenir l'âge (dernier modifié) d'un fichier à l'aide de la fonction os.path.gemtime () comme tel: xxx

J'ai besoin d'exécuter une sorte de Testez pour voir si cette période est dans les trois derniers mois ou non, mais je suis parfaitement confondu par toutes les options de temps disponibles à Python.

Peut-on offrir une idée? Cordialement.


3 commentaires

Quand vous dites "les trois derniers mois", que voulez-vous dire? Mois calendaires? 90 jours?


Si vous pouvez comprendre comment manipuler le temps en utilisant uniquement du code Python, je connais des physiciens qui aimeraient parler avec vous. ;RÉ


Connexes: Rechercher si 24 heures se sont passées entre DateTimes - Python


8 Réponses :


2
votes

1 jour = 24 heures = 86400 secondes. Puis 3 mois sont environ 90 jours, ce qui correspond à 90 * 86400 secondes. Vous pouvez utiliser ces informations pour ajouter / soustraire du temps. Ou vous pouvez essayer le python DateTime module pour date Maths. (surtout chronomelta)


0 commentaires

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

2 commentaires

... C'est un peu une approximation de "mois" :-)


Votre réponse est la meilleure: D



22
votes

Vous pouvez utiliser un peu d'arithmétique DateTime ici pour des raisons de clarté.

>>> 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


1 commentaires

Au lieu de Durée.days Je dirais Durée.Total_seconds () / (24 * 60 * 60) Il est donc plus précis - .days Tirez simplement le nombre de jours de tronquer efficacement de sorte que 1 jour 12 heures devient 1 jour et conduit à des erreurs inattendues par une erreur.



2
votes

Si vous devez avoir le nombre exact de jours, vous pouvez utiliser le module code> Calendrier Code> en conjonction avec DateTime, par exemple,

import calendar
import datetime

def total_number_of_days(number_of_months=3):
    c = calendar.Calendar()
    d = datetime.datetime.now()
    total = 0
    for offset in range(0, number_of_months):
        current_month = d.month - offset
        while current_month <= 0:
            current_month = 12 + current_month
        days_in_month = len( filter(lambda x: x != 0, c.itermonthdays(d.year, current_month)))
        total = total + days_in_month
    return total


0 commentaires

3
votes

Je cherchais quelque chose de similaire et je suis venu avec cette solution alternative: xxx


2 commentaires

Le problème de base ici est combien de jours constituent 3 mois ici. Votre réponse ne s'adresse pas.


J'utiliserais .betmtime () à la place () au cas où le fichier a été modifié puisqu'il a été créé.



5
votes

Pour déterminer si un fichier est plus âgé de 3 mois calendaires, vous pouvez utiliser DateUtil.RelatiiveelTA code> :

from datetime import datetime, timedelta

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


0 commentaires

0
votes

Ceci savoir si une date est de 3 mois de plus

de la date d'importation DateTime, timedelta TIME_PERIOD = DATE.TODAY () - Date (2016, 8, 10)


0 commentaires

0
votes

Voici une solution générique utilisant Time Deltas:

from dateutil.relativedelta import relativedelta # pip install python-dateutil

is_file_older_than(filename, relativedelta(months=3))


0 commentaires