Python 实现指定时间间隔前文件的自动清理
本文介绍如何使用 Python 遍历指定目录,筛选特定后缀的文件,并通过比较文件修改时间与当前系统时间的差值,自动删除超过指定时间间隔的过期文件。
实现逻辑概述
该脚本的核心流程包含五个步骤:首先遍历目标文件夹,其次根据文件后缀名筛选出指定类型的文件列表,接着逐个获取文件路径对应的修改时间,然后计算修改时间与系统当前时间的差值,最后若差值大于指定阈值则执行删除操作。
核心代码实现
以下是完整的 Python 脚本示例,包含时间差计算、文件筛选及删除逻辑:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Document: Remove Synctoycmd sync expired .tmp files"""
import os
import time
import datetime
def diff():
'''time diff'''
starttime = datetime.datetime.now()
time.sleep(10)
endtime = datetime.datetime.now()
print "time diff: %d" % ((endtime-starttime).seconds)
def fileremove(filename, timedifference):
'''remove file'''
date = datetime.datetime.fromtimestamp(os.path.getmtime(filename))
print date
now = datetime.datetime.now()
print now
print 'seconds difference: %d' % ((now - date).seconds)
if (now - date).seconds > timedifference:
if os.path.exists(filename):
os.remove(filename)
print 'remove file: %s' % filename
else:
print 'no such file: %s' % filename
FILE_DIR = 'D:/'
if __name__ == '__main__':
print 'Script is running...'
#diff()
while True:
ITEMS = os.listdir(FILE_DIR)
NEWLIST = []
for names in ITEMS:
if names.endswith(".txt"):
NEWLIST.append(FILE_DIR + names)
#print NEWLIST
for names in NEWLIST:
print 'current file: %s' % (names)
fileremove(names, 10)
time.sleep(10)
print "never arrive..."代码逻辑解析
脚本首先定义了 diff() 函数用于测试时间差计算,以及 fileremove() 函数用于执行具体的删除操作。在 fileremove() 中,通过 os.path.getmtime() 获取文件的修改时间戳,并将其转换为 datetime 对象。随后,获取当前系统时间,计算两者差值的秒数。若该差值大于传入的 timedifference 参数,且文件确实存在,则调用 os.remove() 进行删除。
主程序部分,脚本进入一个无限循环 while True,定期执行文件清理任务。它首先列出 FILE_DIR 目录下的所有项目,筛选出以 .txt 结尾的文件,构建文件路径列表。接着,遍历该列表,对每个文件调用 fileremove() 函数,并传入设定的时间阈值(示例中为 10 秒)。每次循环结束后,脚本通过 time.sleep(10) 暂停 10 秒,避免频繁占用系统资源。
注意事项
在实际应用中,建议将 FILE_DIR 修改为需要清理的实际目录路径,并根据业务需求调整文件后缀筛选条件(如 .txt)和时间阈值。此外,由于脚本包含无限循环,请确保在合适的后台环境中运行,或根据需要添加退出机制。
以上就是 Python 删除指定时间间隔之前文件的详细内容,更多关于 Python 文件操作与自动化脚本的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









