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

2024-03-29 06:37:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经构建了一个脚本,每天生成文件,并按生成日期命名。然而,我需要在1个月后删除这些文件,并发现它有点混乱。我相信下面的方法是可行的,但是我想知道Python是否有一个内置的特性,允许这一点更加pythonic和electronly。在

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

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)

Tags: 文件方法in脚本todaydateifdays
2条回答

看一下Python的datetime模块,它有一些类可以大大简化这一点。您应该能够使用^{}从您的文件名创建一个datetime.datetime对象,而当前使用^{}创建另一个对象。然后,您可以从另一个中减去一个,得到一个^{}对象,您可以使用它来计算日期之间的差异。在

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

比如:

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)

相关问题 更多 >