文章目录
- 文件类型字典
- 移动文件
- 主流程
文件类型字典
根据熵增原理,我们的文件夹在经过一段时间之后会变得混乱不堪,尤其是桌面和下载文件夹,找个东西会十分费劲,特别影响效率,所以用Python做一个文件夹整理小工具还是很有必要的。
而最常见的整理方法,就是按照文件类型,为了实现这个目标,可以先做一个文件类型字典,来绑定文件类型和后缀
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)
执行效果如下,即下载文件夹中的文件都被移动到这几个文件夹夹中了。