Python从N天前和

时间:2015-10-26 23:32:39

标签: python

我正在尝试编写一个可以在某个日期之前和之前查找文件并删除它们的函数。我正在使用结构,我想从我的服务器中删除旧的日志文件。该文件夹包含以下格式的文件:

['user-2015-10-16.log.gz', 'user-2015-10-19.log.gz', 'user-2015-10-22.log.gz', 'user-2015-10-25.log.gz', 'admin-2015-10-17.log.gz', 'admin-2015-10-20.log.gz', 'admin-2015-10-23.log.gz', 'requests.log', 'user-2015-10-17.log.gz', 'user-2015-10-20.log.gz', 'user-2015-10-23.log.gz', 'extra.log', 'admin-2015-10-18.log.gz', 'admin-2015-10-21.log.gz', 'admin-2015-10-24.log.gz', 'user-2015-10-18.log.gz', 'user-2015-10-21.log.gz', 'user-2015-10-24.log.gz', 'admin-2015-10-16.log.gz', 'admin-2015-10-19.log.gz', 'admin-2015-10-22.log.gz', 'admin-2015-10-25.log.gz']

我想要做的是将文件从今天保留到4天,即保留25th, 24th, 23rd, 22nd中的文件并删除其余文件(保留extra.log和requests.log)。

我试过了:

import datetime

days = 4

user = []
admin = []

for i in range(days):
    that_date = datetime.datetime.now() - datetime.timedelta(days=i)
    use = 'user-{}.log.gz'.format(that_date)
    adm = 'admin-{}.log.gz'.format(that_date)
    # user.append(user)
    # admin.append(admin)
    print user, adm 

但是很晚才意识到这给了我想保留的文件而不是我要删除的文件。

非常感谢任何帮助

编辑:如果尚未清除,则每天使用user-(todays date)格式生成文件,因此无法对任何内容进行硬编码。

1 个答案:

答案 0 :(得分:0)

您可以考虑将globuser-*admin-*一起使用,然后使用os.stat

获取文件创建时间

没有测试,但是像:

import glob
import os
import time

target=4*24*60*60   # 4 days in seconds

for fn in glob.glob('user-*')+glob.glob('admin-*'):
    if time.time()-os.path.getctime(fn)>target:
         # delete that file...

您需要将工作目录(或更改glob)更改为目标目录。