本篇文章小编给大家分享一下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()