python实现自动整理文件

 更新时间:2022年04月10日 18:06:20   作者:多好一次  
这篇文章主要介绍了python实现自动整理文件,主要内容通过整理桌面杂乱无章都是文档和资料了解用python如何批量将不同后缀的文件移动到同一文件夹,需要的朋友可以参考一下

前言:

平时工作没有养成分类的习惯,整个桌面杂乱无章都是文档和资料,几乎快占满整个屏幕了。所以必须要整理一下了,今天我们来看下用python如何批量将不同后缀的文件移动到同一文件夹。

演示效果:

  • 使用前

  • 使用后

代码:

# # -*- coding:utf-8 -*-
import os
import glob
import shutil
import tkinter
import tkinter.filedialog
from datetime import datetime

def start():
    root = tkinter.Tk()
    root.withdraw()
    dirname = tkinter.filedialog.askdirectory(parent=root,initialdir="/",title='请选择文件夹')
    return dirname


# 定义一个文件字典,不同的文件类型,属于不同的文件夹
file_dict = {
    "图片": ["jpeg", "jpg", "tiff", "gif", "bmp", "png", "bpg", "svg", "heif", "psd"],
    "视频": ["avi", "flv", "wmv", "mov", "mp4", "webm", "vob", "mng", "qt", "mpg", "mpeg", "3gp", "mkv"],
    "音频": ["aac", "aa", "aac", "dvf", "m4a", "m4b", "m4p", "mp3", "msv", "ogg", "oga", "raw", "vox", "wav", "wma"],
    "文档": ["oxps", "epub", "pages", "docx", "doc", "fdf", "ods", "odt", "pwi", "xsn", "xps", "dotx", "docm", "dox",
"rvg", "rtf", "rtfd", "wpd", "xls", "xlsx","xlsm","ppt", "pptx", "csv", "pdf", "md","xmind"],
    "压缩文件": ["a", "ar", "cpio", "iso", "tar", "gz", "rz", "7z", "dmg", "rar", "xar", "zip"],
    "文本": ["txt", "in", "out","json","xml","log"],
    "程序脚本": ["py", "html5", "html", "htm", "xhtml", "cpp", "java", "css","sql"], 
    '可执行程序': ['exe', 'bat', 'lnk', 'sys', 'com','apk'],
    '字体文件': ['eot', 'otf', 'fon', 'font', 'ttf', 'ttc', 'woff', 'woff2','shx'],
    '工程图文件':['bak','dwg','dxf','dwl','dwl2','stp','SLDPRT','ipj','ipt','idw']
}

# 定义一个函数,传入每个文件对应的后缀。判断文件是否存在于字典file_dict中;
# 如果存在,返回对应的文件夹名;如果不存在,将该文件夹命名为"未知分类";
def JudgeFile(suffix):
    for name, type_list in file_dict.items():
        if suffix.lower() in type_list:
            return name
    return "未知分类"

if __name__ == '__main__':
    try:
        while True:
            path = start()
            print("---->路径是: ",path)
            if path == "":
                print("没有选择路径!")
                break
            # 递归获取 "待处理文件路径" 下的所有文件和文件夹。
            startTime = datetime.now().second
            for file in glob.glob(f"{path}/**/*", recursive=True):
                # 由于我们是对文件分类,这里需要挑选出文件来。
                if os.path.isfile(file):
                    # 由于isfile()函数,获取的是每个文件的全路径。这里再调用basename()函数,直接获取文件名;
                    file_name = os.path.basename(file)
                    suffix = file_name.split(".")[-1]
                    # 判断 "文件名" 是否在字典中。
                    name = JudgeFile(suffix)
                    # 根据每个文件分类,创建各自对应的文件夹。
                    if not os.path.exists(f"{path}\\{name}"):
                        os.mkdir(f"{path}\\{name}")
                        print('path-->',name)
                    # 将文件复制到各自对应的文件夹中。
                    # shutil.copy(file, f"{path}\\{name}")
                    # 将文件移动到各自对应的文件夹中。
                    shutil.move(file, f"{path}\\{name}")
            endTime = datetime.now().second
            countTime= endTime-startTime
            print("---->已经整理完成。共花费 {} s".format(countTime))
            a = input('---->请按回车键退出:')
            if a == '':
                break
    except BaseException:
        print('存在重复的文件!')

执行起来很简单,只要写完程序,点击程运行,等待弹出窗口,选择需要整理的文件夹即可。

如果觉得以上代码觉得复杂,可以尝试以下更为简单的程序。

如何实现文件自动分类?

同一目录下存在很多不同类型的资源条件

  • 1 .分类
  • 2.创建分类目录
  • 3.移动文件资源
import os
import shutil
import tkinter
import tkinter.filedialog
from datetime import datetime

def start():
    root = tkinter.Tk()
    root.withdraw()
    dirname = tkinter.filedialog.askdirectory(parent=root,initialdir="/",title='请选择文件夹')
    return dirname

# 源文件存在路径
src_dir=start()
# 分类资源存在路径
dest_dir=src_dir
# 判断目录是否存在
if not os.path.exists(dest_dir):
    os.mkdir(dest_dir)
# 源目录分析
files=os.listdir(src_dir)
for item in files:
    src_path=os.path.join(src_dir,item)
    # 判断状态
    if os.path.isfile(src_path):
        #如果是文件,进入代码块
        # 判断文件资源的类型
        ndir = item.split('.')[-1]
        desc_path=os.path.join(dest_dir,ndir)
        # 创建分类目录
        if not os.path.exists(desc_path):
            # 如果分类子目录不存在,创建
            os.mkdir(desc_path)
        shutil.move(src_path,desc_path)

到此这篇关于python实现自动整理文件的文章就介绍到这了,更多相关python整理文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对Python3中bytes和HexStr之间的转换详解

    对Python3中bytes和HexStr之间的转换详解

    今天小编就为大家分享一篇对Python3中bytes和HexStr之间的转换详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python在文本开头插入一行的实例

    python在文本开头插入一行的实例

    下面小编就为大家分享一篇python在文本开头插入一行的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python将unicode转为str的方法

    python将unicode转为str的方法

    下面小编就为大家带来一篇python将unicode转为str的方法。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 全CPU并行处理Pandas操作Pandarallel更快处理数据

    全CPU并行处理Pandas操作Pandarallel更快处理数据

    我们在处理数据时,通常小的数据对处理速度不敏感,但数据量一大,顿时会感觉数据处理效率不尽如人意,今天介绍的pandarallel就是一个简单高效的Pandas并行工具,几行代码就可以提高数据处理效率,
    2024-01-01
  • python设置Pyplot的动态rc参数、绘图的填充

    python设置Pyplot的动态rc参数、绘图的填充

    本文主要介绍了python设置Pyplot的动态rc参数、绘图的填充,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • python读取txt文件,去掉空格计算每行长度的方法

    python读取txt文件,去掉空格计算每行长度的方法

    今天小编就为大家分享一篇python读取txt文件,去掉空格计算每行长度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 详解Python函数式编程之装饰器

    详解Python函数式编程之装饰器

    这篇文章主要为大家详细介绍了Python函数式编程之装饰器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • python爬虫之你好,李焕英电影票房数据分析

    python爬虫之你好,李焕英电影票房数据分析

    这篇文章主要介绍了python爬虫之你好,李焕英电影票房数据分析,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • Python使用scrapy爬取阳光热线问政平台过程解析

    Python使用scrapy爬取阳光热线问政平台过程解析

    这篇文章主要介绍了Python使用scrapy爬取阳光热线问政平台过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python命名空间的本质和加载顺序

    Python命名空间的本质和加载顺序

    这篇文章主要介绍了Python命名空间的本质和加载顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论