太可怕了。我承认我不是一个喜欢整理桌面的人,因为我觉得凌乱的桌面更容易找到文件。哈哈,不过最近桌面乱得不忍直视,几乎占满了整个屏幕。虽然一键整理桌面的软件很多,但我也需要整理其他路径下的文件,于是想到用Python来实现这个需求。效果展示我把文件分为9类,分别是图片、视频、音频、文档、压缩文件、常用格式、程序脚本、可执行程序和字体文件。#不同文件的嵌套字典file_dict={'picture':['jpg','png','gif','webp'],'video':['rmvb','mp4','avi','mkv','flv'],"音频":['cd','wave','aiff','mpeg','mp3','mpeg-4'],'文档':['xls','xlsx','csv','doc','docx','ppt','pptx','pdf','txt'],'压缩文件':['7z','ace','bz','jar','rar','tar','zip','gz'],'常用格式':['json','xml','md','ximd'],'程序脚本':['py','java','html','sql','r','css','cpp','c','sas','js','go'],'可执行程序':['exe','bat','lnk','sys','com'],'字体文件':['eot','otf','fon','font','ttf','ttc','woff','woff2']}file_dict是我们自己定义的字典,里面包含了我们学习和工作中常用的格式。常用的格式需要给大家解释一下。对于日常生活中经常用到的文件,不知道放的是什么类型的文件,都存放在这里。注意:如果你电脑中的文件格式比较多,只需要修改上面的file_dict字典即可。开发思路开发这么一个小工具,一共涉及三个Python库,分别是os模块、shutil模块、glob模块。它们一起用来处理文件和文件夹,简直是超级牛逼!整个开发步骤的大致思路如下:①任意给一个文件路径;②获取当前文件路径下的所有文件,并获取每个文件对应的后缀;③判断每个文件是否在指定的嵌套字典中,并返回对应的文件类别;④判断每个文件类别的文件夹是否存在。因为需要创建一个新的文件夹来分类存放文件;⑤将每个文件复制到对应的分类;完整代码如下:【附详细注释】#导入相关库importosimportglobimportshutil#使用input()函数,动态输入需要处理的文件路径。path=input("Pleaseenterthepathofthefiletobecleaned:")#定义一个文件字典,不同的文件类型,属于不同的文件夹,一共9类。file_dict={'图片':['jpg','png','gif','webp'],'视频':['rmvb','mp4','avi','mkv','flv'],"音频":['cd','wave','aiff','mpeg','mp3','mpeg-4'],'文档':['xls','xlsx','csv','doc','docx','ppt','pptx','pdf','txt'],'压缩文件':['7z','ace','bz','jar','rar','tar','zip','gz'],'常用格式':['json','xml','md','ximd'],'程序脚本':['py','java','html','sql','r','css','cpp','c','sas','js','go'],'可执行程序':['exe','bat','lnk','sys','com'],'字体文件':['eot','otf','fon','font','ttf','ttc','woff','woff2']}#定义一个函数,传入每个文件对应的后缀。判断文件是否存在于字典file_dict中;#如果存在,则返回对应的文件夹名;如果不存在,则将文件夹命名为“未知类别”;deffunc(suffix):forname,type_listinfile_dict.items():ifsuffix.lower()intype_list:returnnamereturn"unknowncategory"#递归获取“待处理文件路径”下的所有文件和文件夹。forfileinglob.glob(f"{path}/**/*",recursive=True):#由于我们是对文件进行分类,所以这里需要选择文件。ifos.path.isfile(file):#由于isfile()函数,所以得到了每个文件的完整路径。这里调用basename()函数直接获取文件名;file_name=os.path.basename(file)suffix=file_name.split(".")[-1]#判断"filename"是否在字典中。name=func(suffix)#print(func(suffix))#根据每个文件的分类,创建对应的文件夹。ifnotos.path.exists(f"{path}\\{name}"):os.mkdir(f"{path}\\{name}")#将文件复制到相应的文件夹中。shutil.copy(file,f"{path}\\{name}")结果如下:期待这篇文章的代码,老黄已经分享给大家了。但是这段代码我并没有做可视化界面。同时也希望大家能把程序打包直接发给别人,让别人直接使用。
