首页 > 编程语言 >关于使用python脚本将同级的其他目录下的所有文件根据年份移动到当脚本位置的年份目录

关于使用python脚本将同级的其他目录下的所有文件根据年份移动到当脚本位置的年份目录

时间:2023-03-11 19:33:27浏览次数:51  
标签:脚本 年份 file year os 目录

今天收到一个请求,要将一个目录下的所有文件,根据年份进行分类放到年份目录,目录中近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

相关文章