通过与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']