当前位置: 首页 > 科技观察

教你用Python实现批处理文件的压缩处理

时间:2023-03-16 11:02:43 科技观察

1.前言大家好,我是崔燕飞。当我接到项目求助时,需要将上千个文件夹中的文件进行压缩,并删除源文件,只留下压缩后的压缩文件。数据量大,人工做起来费时费力。最好用Python来处理。向上。2.项目目标批量压缩文件夹内容,满足客户要求。3、项目准备软件:PyCharm需要的库:os、shutil、zipfile4、项目分析1)如何读取源文件?使用OS库获取文件夹名称列表,使用for循环轻松获取待压缩源文件。2)如何进行压缩处理?使用zipfile库中的zipfile.ZipFile()对获取的文件进行压缩。3)如何删除源文件?先使用os库的remove()删除文件,再使用shutil库的rmtree()删除空文件夹。五、项目实现1、第一步导入需要的三个库importosasosimportshutilimportzipfile2。第二步定义删除文件和压缩文件的函数defdel_(rootdir):filelist=[]filelist=os.listdir(rootdir)#列出目录下的所有文件名forfinfilelist:filepath=os.path.join(rootdir,f)#将文件名映射成绝对路径ifos.path.isfile(filepath):#判断文件是文件还是文件夹os.remove(filepath)#如果是文件,直接删除elifos.path.isdir(filepath):shutil.rmtree(filepath,True)#如果是文件夹,则删除文件夹和文件夹中的所有文件shutil.rmtree(rootdir,True)defzipDir(dirpath,outFullName):zip=zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)forpath,dirnames,filenamesinos.walk(dirpath):#去掉目标和路径,只对目标文件夹压缩文件和文件夹fpath=path.replace(dirpath,'')forfilenameinfilenames:zip.write(os.path.join(path,filename),os.path.join(fpath,filename))zip.close()3.第三步创建主函数defmain():path_end='D:/a/h/'date=os.listdir(path_end)#Get目标文件夹下所有文件夹名称列表forfindate:ljbc='D:/a/h/'+f+'/'+'查询信息.zip'ljbc2='D:/a/h/'+f+'/'+'delivermodification.zip'#上面两行是创建压缩文件nameljcx='D:/a/h/'+f+'/查询信息'ljxf='D:/a/h/'+f+'/delivermodification'#上面两行是要压缩的源文件zipDir(ljcx,ljbc)zipDir(ljxf,ljbc2)del_(ljcx)del_(ljxf)if__name__=='__main__':main()6.效果展示1.处理过的文件夹:2.处理过的文件夹中的压缩文件:7.总结本文介绍如何使用Python处理大批量的文件即可批量压缩,只需几行语句即可实现。程序写好后,用不到一分钟的时间就可以完成一个人一天不可能完成的任务。生命太短暂,不能使用Python!