你的桌面是否像下面的图片一样被各种文件给堆满了,但是每一个文件又不清楚是否后面还有作用,也不敢删除,自己一个一个转移又太麻烦了。没关系,今天我带大家用python一起来做一个文件归类器,一键进行分类,再也不会看到满满当当的桌面了。

python创建一个dwg 文件 怎么用python创建一个文件夹_目标文件

我们今天需要导入的os、shutil、glob这三个库,os用来对路径的处理,shutil用来对文件的拷贝删除处理,glob用来对指定文件夹下的文件进行遍历。

# -*- coding:utf-8 -*-import osimport shutilimport glo

参数获取程序

然后我们写了一个参数获取函数,用于处理需要文件进行分类的路径和存放路径等参数的用户输入。

# -*- 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 = path flag = 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 -*-def FileHandle(goal_path,mkdir_path,flag): file_num = 0 path_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 += 1 shutil.copy(file, f'{mkdir_path}/{suffix}') file_num += 1 if 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 = 0 path_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 suffix=="exe" or suffix=="lnk": pass else: if not os.path.exists(f'{mkdir_path}/{suffix}'): os.mkdir(f'{mkdir_path}/{suffix}') path_num += 1 shutil.copy(file, f'{mkdir_path}/{suffix}') file_num += 1 return file_num,path_num

大体思路和普通文件夹的处理是一致的,但是在桌面文件的处理中我们将exe和lnk后缀的文件进行了过滤,不对它进行拷贝操作,其它文件我们都拷贝到目标文件夹中。

# -*- coding:utf-8 -*- if suffix=="exe" or suffix=="lnk": pass else: if not os.path.exists(f'{mkdir_path}/{suffix}'): os.mkdir(f'{mkdir_path}/{suffix}') path_num += 1 shutil.copy(file, f'{mkdir_path}/{suffix}')

另外在桌面文件的处理中我现在也没有放上删除原文件的操作,若有需要的小伙伴直接在后面加上文件删除操作即可。

统计信息程序

在所有的文件都处理之后,我还弄了一个统计程序,统计一共处理了多少个文件,创建了多少个分类文件夹。

# -*- coding:utf-8 -*-def WriteInfo(mkdir_path): file_name = mkdir_path+"\info.txt" with open(file_name,'w',encoding='utf-8') as f: f.write(f'整理完成,有{file_num}个文件分类到了{path_num}个文件夹中')

主程序

最后就是我们的主程序了,分别去调用参数获取程序,文件处理程序和统计程序即可。

# -*- coding:utf-8 -*-if __name__ == '__main__': goal_path,mkdir_path,flag=getconf() if goal_path==os.path.join(os.path.expanduser('~'), "Desktop"): file_num,path_num=DesktopHandle(goal_path, mkdir_path) else: file_num,path_num=FileHandle(goal_path, mkdir_path,flag) WriteInfo(mkdir_path)

实现效果

好了,整个程序都分析过了,最后我们看看最终的实现效果吧。

程序的执行是这样的

python创建一个dwg 文件 怎么用python创建一个文件夹_目标文件_02

桌面文件的归类

python创建一个dwg 文件 怎么用python创建一个文件夹_目标文件_03

普通文件的归类

python创建一个dwg 文件 怎么用python创建一个文件夹_Python_04

结束

好了,今天的分享就到这里。