如何在Python中查看文件是否超过3个月?

时间:2011-04-27 03:41:10

标签: python time

我很想在Python中操纵时间。我可以使用os.path.getmtime()函数获取文件的(上次修改)年龄:

import os.path, time    

os.path.getmtime(oldLoc)

我需要进行某种测试以确定这个时间是否在过去三个月内,但我对Python中所有可用的时间选项感到困惑。

任何人都可以提供任何见解吗?亲切的问候。

8 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:17)

为了清楚起见,您可以在此处使用一些日期时间算法。

答案 2 :(得分:4)

要查找文件是否超过3个日历月,您可以使用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)

&#34;过去3个月的确切天数&#34;在这种情况下可能与90天不同。如果您确切需要90天:

from datetime import datetime, timedelta

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

如果您想考虑本地utc偏移量的变化,请参阅Find if 24 hrs have passed between datetimes - Python

答案 3 :(得分:2)

1天= 24小时= 86400秒。然后3个月大约是90天,即90 * 86400秒。您可以使用此信息来添加/减去时间。或者您可以尝试使用Python datetime模块进行日期数学运算。 (特别是timedelta)

答案 4 :(得分:2)

如果您需要确切的天数,可以将calendar模块与日期时间结合使用,例如,

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

然后将total_number_of_days()的结果提供给其他人为日期算术提供的代码。

答案 5 :(得分:2)

我正在寻找类似的东西,并想出了这个替代解决方案:

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"

答案 6 :(得分:0)

这是为了知道日期是否早3个月

从datetime导入日期,timedelta time_period = date.today() - 日期(2016年,8月10日)&lt; timedelta(天= 120)

答案 7 :(得分:0)

这是使用时间增量的通用解决方案:

from datetime import datetime

def is_file_older_than (file, delta): 
    cutoff = datetime.utcnow() - delta
    mtime = datetime.utcfromtimestamp(os.path.getmtime(file))
    if mtime < cutoff:
        return True
    return False

要检测超过 3 个月的文件,我们可以接近 90 天:

from datetime import timedelta

is_file_older_than(filename, timedelta(days=90))

或者,如果您可以安装外部依赖项:

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

is_file_older_than(filename, relativedelta(months=3))