柠檬少年|媳妇儿总说我桌面太乱,我一气之下用python写了个桌面文件分类器

你的桌面是否像下面的图片一样被各种文件给堆满了 , 但是每一个文件又不清楚是否后面还有作用 , 也不敢删除 , 自己一个一个转移又太麻烦了 。 没关系 , 今天我带大家用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}')


推荐阅读