有没有更好的方法来删除python中一个月的文件?

时间:2011-12-14 21:32:34

标签: python date

我已经构建了一个每天生成文件的脚本,并根据它们生成的日期命名。但是,我需要在1个月后删除这些文件,并发现它有点令人困惑。我相信以下内容可行,但我想知道Python是否具有内置功能,允许更多Pythonicly和elegently。

请注意,此代码通过删除上个月到达本月最后一天的所有文件来处理月末比下个月更多天的文件。

if today.month != 1:
    if today.day == days_in_month[today.month] and days_in_month[today.month] < days_in_month[today.month - 1]:
        for x in range(days_in_month[today.month],days_in_month[today.month-1]+1):
            date = date(today.year,today.month-1,x)

            fname = str(date)+".stub"
            remove(fname)
else:
    date = date(today.year-1,12,x)

    fname = str(date)+".stub"
    remove(fname)

2 个答案:

答案 0 :(得分:5)

看一下Python的datetime模块,它有一些应该简化这一过程的类。您应该可以使用datetime.datetime.strptime()从文件名创建datetime.datetime对象,使用datetime.datetime.now()创建当前时间的另一个对象。然后,您可以从另一个中减去一个以获得datetime.timedelta对象,您可以使用该对象来确定日期之间的差异。

答案 1 :(得分:4)

您可以使用创建时间,而不是查看文件名来确定年龄。

类似的东西:

import os
import datetime

path = "/path/to/files"    

for file in os.listdir(path):
    fullpath   = os.path.join(path,file)    # turns 'file1.txt' into '/path/to/file1.txt'
    timestamp  = os.stat(fullpath).st_ctime # get timestamp of file
    createtime = datetime.datetime.fromtimestamp(timestamp)
    now        = datetime.datetime.now()
    delta      = now - createtime
    if delta.days > 30:
        os.remove(fullpath)