通过与Python中的当前日期进行比较,删除日期格式的zip文件

通过与Python中的当前日期进行比较,删除日期格式的zip文件,python,date,dir,Python,Date,Dir,例如,我有一个文件列表(实际上这些是某些目录中的文件),如下所示 import os path = '/home/user/folder' files = os.listdir(path) 结果如下 files = ['backup_file_2010-06-30_category.zip','backup_file_2010-06-28_category.zip', 'backup_file_2010-06-26_category.zip','backup_file_20

例如,我有一个文件列表(实际上这些是某些目录中的文件),如下所示

import os
path  = '/home/user/folder'
files = os.listdir(path)
结果如下

files = ['backup_file_2010-06-30_category.zip','backup_file_2010-06-28_category.zip',
         'backup_file_2010-06-26_category.zip','backup_file_2010-06-24_category.zip',
         'backup_file_2010-06-23_category.zip','backup_file_2010-06-20_category.zip'
         'some_text_files_one.txt','some_text_files_two.txt']
因此,从这个列表中,我需要删除其中包含日期的zip文件,条件是,
从今天起五天之前创建的文件需要删除

我的意思是,如果今天创建的文件是
backup\u file\u 2013-04-17\u category.zip
,我们需要删除从今天开始五天之前创建的文件,比如名为
backup\u file\u 2013-04-11\u category.zip的文件


任何人都可以告诉我如何在python中执行此操作吗

您可以执行类似操作,并且在
筛选的\u文件
列表中,您有需要删除的文件列表。如果备份文件以
前缀开头
,则该选项有效

from datetime import datetime
from datetime import timedelta
import os

path  = '/home/user/folder'
files = os.listdir(path)

prefix = 'backup_file_'
days = 5

filtered_files = []
five_days_ago = datetime.now() - timedelta(days=days)
date_before = '%s%s' % (prefix, five_days_ago.strftime('%Y-%m-%d'))
for f in files:
  if f.startswith(prefix) and f < date_before:
    filtered_files.append(f)

print filtered_files
从日期时间导入日期时间
从日期时间导入时间增量
导入操作系统
路径='/home/user/folder'
files=os.listdir(路径)
前缀=‘备份文件’
天数=5天
过滤的_文件=[]
五天前=datetime.now()-timedelta(天=天)
date\u before='%s%s'(前缀,五天前。strftime('%Y-%m-%d'))
对于文件中的f:
如果f.startswith(前缀)和f
您可以使用正则表达式从每个文件名中提取日期,并对其进行比较,以查看备份文件是否确实旧。如果正则表达式中没有匹配项,则它不是备份文件

from datetime import date
import re

OLD_FILE_DAYS = 5

def is_old_backup_file(filename, today):
    m = re.match('backup_file_(\d\d\d\d)-(\d\d)-(\d\d)_category.zip', filename)
    if not m:
        return False
    year, month, day = (int(s) for s in m.groups())
    d = date(year, month, day)
    delta = today - d
    return delta.days > OLD_FILE_DAYS

files = ['backup_file_2010-06-30_category.zip','backup_file_2010-06-28_category.zip',
         'backup_file_2010-06-26_category.zip','backup_file_2010-06-24_category.zip',
         'backup_file_2010-06-23_category.zip','backup_file_2010-06-20_category.zip',
         'some_text_files_one.txt','some_text_files_two.txt'] # os.listdir(path)

today = date(2010, 7, 1) # date.today()

filtered_files = [f for f in files if not is_old_backup_file(f, today)]

print filtered_files
输出:

['backup_file_2010-06-30_category.zip', 'backup_file_2010-06-28_category.zip',
'backup_file_2010-06-26_category.zip', 'some_text_files_one.txt',
'some_text_files_two.txt']
['backup_file_2010-06-30_category.zip', 'backup_file_2010-06-28_category.zip',
'backup_file_2010-06-26_category.zip', 'some_text_files_one.txt',
'some_text_files_two.txt']