我以前经常把下载的东西放在桌面或者“下载”文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档。
不知道你是不是有过跟我一样糟糕的体验,不过,前段时间我用Python做了一个根据后缀名整理文件的工具,先来看看效果:
自动整理前:
自动整理后:
效果非常好,舒服多了,如果你想要直接下载源代码试试看,请在公众号后台回复 整理 获得源代码下载地址。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
你只需要修改源代码主程序中调用 auto_organize函数的参数即可完成对对应文件夹的整理,比如我想整理 C:\Users\83493\Downloads
文件夹:
if __name__ == "__main__":
auto_organize(r"C:\Users\83493\Downloads")
如上所示,修改代码第61行的文件夹地址即可。修改完成后运行该脚本:
python auto_files.py
就能瞬间完成对指定文件夹的整理,极其方便。
2.原理
这份代码的原理很简单,为了整理这些文件,我们要遍历当前指定的文件夹:如果是文件夹则跳过,如果是文件则检测后缀,分类到对应的文件夹中。文件夹名字及其对应的文件后缀如下:
DIRECTORIES = {
"图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg",
".heif", ".psd"],
"视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng",
".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
"文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods",
".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt",
"pptx",".csv",".pdf"],
"压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z",
".dmg", ".rar", ".xar", ".zip"],
"影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3",
".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"],
"文本": [".txt", ".in", ".out"],
"编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
"可执行程序": [".exe"],
}
接下来是自动整理的部分代码,先遍历指定的文件夹,识别后缀并分类到对应的文件夹中。
for entry in os.scandir(dirval):
if entry.is_dir():
# 如果是文件夹则跳过
continue
file_path = Path(dirval + "\\" + entry.name)
file_format = file_path.suffix.lower()
# 避免后缀大小写判断问题,全转为小写
if file_format in FILE_FORMATS:
directory_path = Path(dirval + "\\" + FILE_FORMATS[file_format])
directory_path.mkdir(exist_ok=True)
file_path.rename(directory_path.joinpath(entry.name))
还有出现不存在在我们字典里的后缀的情况,把它们分类到名为 其他文件
的文件夹中:
try:
os.mkdir(dirval + "\\" +"其他文件")
except:
pass
for dir in os.scandir(dirval):
try:
if dir.is_dir():
# 删除空文件夹
os.rmdir(dir)
else:
temp = str(Path(dir)).split('\\')
# 分割文件路径
path = '\\'.join(temp[:-1])
print(path + '\\其他文件\\' + str(temp[-1]))
os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1]))
except:
pass
3.自定义整理
如果你并不想按照设定好的文件整理,希望能自定义地将某些特定后缀的文件放到另一个文件夹,比如 .py 文件统一收纳到“Python脚本”文件夹中,你可以这么改 DIRECTORIES 变量:
改动前:
DIRECTORIES = {
# ......
"编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
# ......
}
改动后:
DIRECTORIES = {
# ......
"编程": [".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
"Python脚本": [".py"],
# ......
}
你可以按照这个方法,自定义收纳那些你需要整理收纳的文件格式。
如果你只想对 DIRECTORIES 变量里那些后缀的文件进行整理,不属于这些后缀的文件则不进行整理,不需要放到“其他文件”目录下,此时要怎么做?
很简单,你只需要删除以下部分代码就可以完成这个功能:
# ......
try:
os.mkdir(dirval + "\\" +"其他文件")
except:
pass
for dir in os.scandir(dirval):
try:
if dir.is_dir():
# 删除空文件夹
os.rmdir(dir)
else:
temp = str(Path(dir)).split('\\')
# 分割文件路径
path = '\\'.join(temp[:-1])
print(path + '\\其他文件\\' + str(temp[-1]))
os.rename(str(Path(dir)), path + '\\其他文件\\' + str(temp[-1]))
except:
pass
# ......
怎么样,是不是很方便?如果这个简单的脚本帮助到了你,请转发给需要的人哦。
如何获取源码:
在上面原理一节中我已经将所有源代码都讲完了,如果你不想复制粘贴,也可以在公众号后台回复 「整理」 获得完整源代码下载地址。
推荐阅读:入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领廖雪峰视频资料!