柠檬少年|媳妇儿总说我桌面太乱,我一气之下用python写了个桌面文件分类器
你的桌面是否像下面的图片一样被各种文件给堆满了 , 但是每一个文件又不清楚是否后面还有作用 , 也不敢删除 , 自己一个一个转移又太麻烦了 。 没关系 , 今天我带大家用python一起来做一个文件归类器 , 一键进行分类 , 再也不会看到满满当当的桌面了 。
库我们今天需要导入的os、shutil、glob这三个库 , os用来对路径的处理 , shutil用来对文件的拷贝删除处理 , glob用来对指定文件夹下的文件进行遍历 。
# -*- coding:utf-8 -*-import osimport shutilimport glo参数获取程序然后我们写了一个参数获取函数 , 用于处理需要文件进行分类的路径和存放路径等参数的用户输入 。
【柠檬少年|媳妇儿总说我桌面太乱,我一气之下用python写了个桌面文件分类器】# -*- coding:utf-8 -*-def getconf():flag = "1"print("输入‘1’为桌面文件夹整理 , 其它文件夹整理请输入完整路径")path=input("请输入需要整理的文件夹:")if path=="1":goal_path = os.path.join(os.path.expanduser('~'), "Desktop")else:goal_path = pathflag = input("是否需要保留原文件(此项配置仅针对非桌面文件夹有效) , 保留请输入‘1’ , 不保留请输入‘2’:")mkdir_path=input("请输入整理后的文件存放路径:")if not os.path.exists(mkdir_path):os.mkdir(mkdir_path)return goal_path,mkdir_path,flag文件处理程序因为桌面文件夹和普通文件夹不一样 , 桌面文件上存在着大量的可执行程序和快捷方式 , 我们无需将这一部分的文件进行归类处理 。 所以我这里将桌面文件夹和普通文件夹分开进行了处理 。 我们先看看普通文件夹的处理方式 。
# -*- coding:utf-8 -*-#author:菜鸟小白的学习分享def FileHandle(goal_path,mkdir_path,flag):file_num = 0path_num = 0?for file in glob.glob(f'{goal_path}/**/*', recursive=True):if os.path.isfile(file):filename = os.path.basename(file)if '.' in filename:suffix = filename.split('.')[-1]else:suffix = 'others'if not os.path.exists(f'{mkdir_path}/{suffix}'):os.mkdir(f'{mkdir_path}/{suffix}')path_num += 1shutil.copy(file, f'{mkdir_path}/{suffix}')file_num += 1if flag=="2":shutil.rmtree(goal_path)return file_num,path_num在对普通文件夹处理之后我们根据输入的flag参数判断是否需要保留原文件 , 若不需保留的话 , 我们就删除目标文件夹及其下属的所有文件内容 。
# -*- coding:utf-8 -*-if flag=="2":shutil.rmtree(goal_path)我们再看看桌面文件的处理方式
# -*- coding:utf-8 -*-def DesktopHandle(goal_path,mkdir_path):file_num = 0path_num = 0for file in glob.glob(f'{goal_path}/**/*', recursive=True):if os.path.isfile(file):filename = os.path.basename(file)if '.' in filename:suffix = filename.split('.')[-1]else:suffix = 'others'if suffix=="exe" or suffix=="lnk":passelse:if not os.path.exists(f'{mkdir_path}/{suffix}'):os.mkdir(f'{mkdir_path}/{suffix}')path_num += 1shutil.copy(file, f'{mkdir_path}/{suffix}')file_num += 1return file_num,path_num大体思路和普通文件夹的处理是一致的 , 但是在桌面文件的处理中我们将exe和lnk后缀的文件进行了过滤 , 不对它进行拷贝操作 , 其它文件我们都拷贝到目标文件夹中 。
# -*- coding:utf-8 -*- if suffix=="exe" or suffix=="lnk":passelse:if not os.path.exists(f'{mkdir_path}/{suffix}'):os.mkdir(f'{mkdir_path}/{suffix}')path_num += 1shutil.copy(file, f'{mkdir_path}/{suffix}')
推荐阅读
- 金戈鐵馬|特朗普力挺铁杆支持者,枪杀两人的少年没错?抗议活动不断发酵
- 开封于七一|育迎宾尚法好少年,借温柔秋风多送法
- 川报观察|邻水这个贫困户把院子变成了花园 还从东北“摇”回一个媳妇儿
- 少年|央视要搞选秀,热搜沸了!网友提名他当导师,点赞数第一
- 暖夏少年|2020电脑硬盘销量排行榜:七彩虹加入战局,硬是打倒了金士顿
- 少年一梦|2020畅销手机排行,iPhone无人超越,安卓旗舰全线溃败
- 少年帮|进入倒计时,华为突然宣布,供应链将迎来“洗牌”?
- 艾希大人|竹内结子拍摄杂志封面 柠檬黄上衣青春活力
- 少年帮|纯国产“龙芯”即将来临,正式确认?中科院宣布决定
- 上线|原创央视也搞成团选秀!《上线吧!华彩少年》有哪些优势?粉丝放心了
