Python实现自动清理文件夹旧文件
本文介绍使用Python实现自动清理文件夹中旧图片的功能。通过开启独立线程定期检测文件夹大小,当超过设定阈值时,按最后修改时间排序并删除最早的文件,直至符合大小要求。
本文分享了一个使用Python自动清理文件夹中旧文件的具体代码示例,供读者参考。
自动清理逻辑说明
由于程序持续存储图片,需要监控图片文件夹的总大小。一旦文件夹大小超过预设的限制值,系统将自动删除部分最早生成的图片以释放空间。
实现方案采用开启独立线程的方式,在线程内部周期性地执行监测任务。
具体逻辑为:首先检测文件夹当前大小,若超过设定阈值,则将文件夹内的文件按最后修改时间进行排序,随后删除部分最早的文件;在删除过程中持续监测文件夹大小,直到其符合预设要求。
Python实现代码
# -*- coding: utf-8 -*-
#
# 开线程检测文件夹大小,超过指定大小,则按文件最后修改时间排序并删除一部分旧图片
# 在线程里每隔一段时间检测一次
#
import os
import threading
import time
#文件按最后修改时间排序
def get_file_list(file_path):
dir_list = os.listdir(file_path)
if not dir_list:
return
else:
dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
#print(dir_list)
return dir_list
#获取文件夹大小
def get_size(file_path):
totalsize=0
for filename in os.listdir(file_path):
totalsize=totalsize+os.path.getsize(os.path.join(file_path, filename))
#print(totalsize / 1024 / 1024)
return totalsize / 1024 / 1024
# 1文件目录 2文件夹最大大小(M) 3超过后要删除的大小(M)
def detect_file_size(file_path, size_Max, size_Del):
print(get_size(file_path))
if get_size(file_path) > size_Max:
fileList = get_file_list(file_path)
for i in range(len(fileList)):
if get_size(file_path) > (size_Max - size_Del):
print ("del :%d %s" % (i + 1, fileList[i]))
os.remove(file_path + fileList[i])
#检测线程,每个5秒检测一次
def detectPicSize():
while True:
print('======detect============')
detect_file_size("../pic/", 30, 5)
time.sleep(5)
if __name__ == "__main__":
#创建检测线程
detect_thread = threading.Thread(target = detectPicSize)
detect_thread.start()
以上即为本文的全部内容,希望能为读者的学习提供有益帮助,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













