Python根据文件后缀实现文件夹整理
作者:微小冷
这篇文章主要为大家详细介绍了Python如何根据文件后缀实现文件夹整理,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的可以参考下
文件类型字典
根据熵增原理,我们的文件夹在经过一段时间之后会变得混乱不堪,尤其是桌面和下载文件夹,找个东西会十分费劲,特别影响效率,所以用Python做一个文件夹整理小工具还是很有必要的。
而最常见的整理方法,就是按照文件类型,比如按照下表对文件进行归类
文件夹 | 文件类别 |
---|---|
图片 | “.jpg”, “.png”, “.jpeg”, “.gif” |
视频 | “.mp4”, “.mkv” |
音乐 | “.mp3”, “.wav” |
文档 | “.pdf” |
文本 | “.csv”, “.txt” |
源码 | “.py”, “.c”, “.cpp”, “.php” |
office | “.docx”,“.xlsx”, “.pptx”, “.doc”, “.ppt”, “.xls” |
压缩包 | “.zip”, “.tgz”, “.rar”, “.tar”, “.7z” |
安装包 | “.msi”, “.exe” |
为了实现这个目标,可以先做一个文件类型字典,来绑定文件类型和后缀
fDct = { "图片" : [".jpg", ".png", ".jpeg", ".gif"], "视频" : [".mp4", ".mkv"], "音乐" : [".mp3", ".wav"], "文档" : [".pdf"], "文本" : [".csv", ".txt"], "源码" : [".py", ".c", ".cpp", ".php"], "office": [".docx",".xlsx", ".pptx", ".doc", ".ppt", ".xls"], "压缩包": [".zip", ".tgz", ".rar", ".tar", ".7z"], "安装包": [".msi", ".exe"], }
而文件整理的逻辑是,先创建图片、视频等文件夹,然后通过文件的后缀找到其对应的文件类别,然后移动到相应的文件夹。为了更加便捷地实现这个功能,做一个反向的字典,用以通过后缀返回文件夹
exDct = {} for key in fDct: exDct.update({ex:key for ex in fDct[key]})
移动文件
接下来就是移动文件,这里面有两个问题,一是目标文件夹不存在,则需要新建;二则是目标文件夹中已经有了同名文件,那么则需要报错
import os import shutil pJoin = os.path.join pExist = os.path.exists def mvFile(src, dst): if not pExist(dst): os.makedirs(dst) try: shutil.move(src, dst) return True except Exception as e: print(e) return False
主流程
接下来就是整个文件夹整理的主流程,第一步通过os.listdir得到所有文件名;第二步,遍历所有文件名,如果这个文件名的后缀刚好就在我们的后缀字典中,那么就将这个文件移动到对应文件类型的文件夹里。
from pathlib import Path # tar是准备整理的文件夹 def sortFiles(tar): files = os.listdir(tar) fsErr = [] for f in files: src = pJoin(tar, f) ex = Path(src).suffix.lower() if ex not in exDct: continue dst = pJoin(tar, exDct[ex]) if not mvFile(src, dst): fsErr.append(src) if len(fsErr) == 0: return "全部文件移动成功" else: return "以下文件移动失败:\r\n" + "\r\n".join(fsErr)
执行效果如下,即下载文件夹中的文件都被移动到这几个文件夹夹中了。
以上就是Python根据文件后缀实现文件夹整理的详细内容,更多关于Python文件夹整理的资料请关注脚本之家其它相关文章!