今天收到一个请求,要将一个目录下的所有文件,根据年份进行分类放到年份目录,目录中近20万个文件
但只移动指定后缀的,年份判断标准很重要和严谨,一定是 _年份数字其他数字.后缀结尾的
像这种只有想到用脚本操作要安全一些,必须得将正则写得非常严谨,否则会匹配到前面的或者中间的部分
再汇总一下脚本要实现的功能,逻辑如下图所示
1、于是写了如下脚本,因为需要快速处理,所以脚本未进行优化-(但也是改了几次),待有时间了再补上一个更完善的脚本
import os import re import shutil directory="./Upload" os.chdir(directory) FileTypes=["BMP","DOC","DOCX","GIF","JPEG","JPG","Jpg","PDF","PDf","PNG","Pdf","TIF","TXT","XLS","XLSX","bmp","doc","docx","gif","jpeg","jpg","msg","ofd","pdf","png","ppt","pptx","rar","tif","tiff","txt","xls","xlsm","xlsx","zip"] files=[ f for f in os.listdir() if os.path.isfile(f) ] # Create year directory for year in range(2008,2024): os.mkdir("../"+str(year)) for file in files: for FileType in FileTypes: flag=False for year in range(2008,2024): pattern="_"+str(year)+"\d+\."+FileType+"$" if re.search(pattern,file): print(file) shutil.move(file,"../"+str(year)) flag=True break if flag==True: break
这个版本的特点,主要是在处理跳出多层/两层for语句,进行加速处理,如果没有break机制,时间将是非常夸张的,同一个文件,会进行多次无效的遍历
如果要使用这个脚本,这里说一下,注意事项
1、脚本只处理与脚本同级目录下的所有文件,不包括子目录和子目录下的文件
2、需要在脚本所在的目录下执行,python ./File-Archive-based-on-year.py
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17206770.html
标签:脚本,年份,file,year,os,目录 From: https://www.cnblogs.com/5201351/p/17206770.html