前言
我相信很多小姐姐或小哥哥都应该遇到过和我们前台小姐姐类似的问题!以前经常把下载的东西放在桌面或者 “下载” 文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档
既然小姐姐这么诚恳的让我帮个小忙,一般来说,如果是产品经理我都是直接拒绝的,但是看到前台小姐姐那芳容,拒绝两个字我是说不出口的,而且小姐姐亲自下的面,那肯定是一般人吃不到的,技术就分享给你们,小姐姐的面就只能我吃独食了哈!
先看一看效果
自动整理前:
自动整理后:
效果非常好,舒服多了!
1.准备
你只需要修改源代码主程序中调用 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 # ......
怎么样,是不是很方便?如果这个简单的脚本帮助到了你,请转发给需要的人哦
好了不多和你们BB了,我要和小姐姐回家吃面了!最后征求到小姐姐的同意,把照片放下面大家一起欣赏一下吧!
我是不是要脱单了!嘿嘿嘿!
需要脚本或者需要源码的:
①3000多本Python电子书有
②Python开发环境安装教程有
③Python400集自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目源码案例分享有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:754370353(纯技术交流和资源共享,广告勿入)以自助拿走