欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 媳妇儿说我的桌面太乱,我一气之下用Python整了一个文件归类器~~

程序员文章站 2022-03-30 09:50:11
​你的桌面是否像下面的图片一样被各种文件给堆满了,但是每一个文件又不清楚是否后面还有作用,也不敢删除,自己一个一个转移又太麻烦了。没关系,今天我带大家用python一起来做一个文件归类器,一键进行分类,再也不会看到满满当当的桌面了。库我们今天需要导入的os、shutil、glob这三个库,os用来对路径的处理,shutil用来对文件的拷贝删除处理,glob用来对指定文件夹下的文件进行遍历。# -*- coding:utf-8 -*-#author:菜鸟小白的学习分享import osimpor...

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

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

# -*- coding:utf-8 -*-
#author:菜鸟小白的学习分享
import os
import shutil
import glo

参数获取程序

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

# -*- coding:utf-8 -*-
#author:菜鸟小白的学习分享
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 -*-
#author:菜鸟小白的学习分享
def FileHandle(goal_path,mkdir_path,flag):
    file_num = 0
    path_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 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 -*-
#author:菜鸟小白的学习分享
    if flag=="2":
        shutil.rmtree(goal_path)

我们再看看桌面文件的处理方式

# -*- coding:utf-8 -*-
#author:菜鸟小白的学习分享
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 -*-
#author:菜鸟小白的学习分享
 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 -*-
#author:菜鸟小白的学习分享
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 -*-
#author:菜鸟小白的学习分享
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整了一个文件归类器~~

桌面文件的归类
荐
                                                        媳妇儿说我的桌面太乱,我一气之下用Python整了一个文件归类器~~

普通文件的归类
荐
                                                        媳妇儿说我的桌面太乱,我一气之下用Python整了一个文件归类器~~

结束

有需要程序源码的小伙伴关注公众号“菜鸟小白的学习分享”回复“文件分类器源码”即可获取源码下载链接。

有需要程序执行文件的小伙伴关注公众号“菜鸟小白的学习分享”回复“文件分类器可执行文件”即可获取菜鸟小白打包好的可执行程序下载链接。

好了,今天的分享就到这里。如果你也认同菜鸟小白的话,那就给菜鸟小白一个关注、在看、点赞+赞赏吧,你们的支持,是我持续不断的动力。
推荐阅读:

教你搭建微信公众号自动答复机器人

媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来-

媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。

python使用cx_Oracle库连接oracle服务器

荐
                                                        媳妇儿说我的桌面太乱,我一气之下用Python整了一个文件归类器~~

一个人的学习——孤单
一群人的学习——幸福

本文地址:https://blog.csdn.net/qq_25535969/article/details/107166204