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整理文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现批量自动整理文件

    为了实现这样的小工具,我们先设想有下面这些功能. 1.可以自定义整理某一个路径下面的所有需要被整理的文件.2.默认情况下,使用文件后缀作为同一种类文件的文件夹名称,有其他想法的小伙伴可自行扩展. 将使用到的python模块导入到代码块中. import os # 文件/文件夹应用操作 import shutil # 移动文件 import logging # 使用日志logging来打印日志 选择好需要整理的原始文件目录. 下面是整理完成后的效果图,根据文件类型对各种文件进行整理. 在代码块中加

  • Python脚本实现一键自动整理办公文件

    目录 导语: 1.准备 2.原理 3.自定义整理 导语: 举例:Python做一个根据后缀名整理文件的工具,先来看看效果: 自动整理前: 自动整理后: 这样看起来就好很多了. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:python Windows最新版本安装教程 我们只需要修改源代码主程序中调用 auto_organize函数的参数即可完成对对应文件夹的整理,比如我想整理  C:\Users\83493\Downloads 文件夹: if

  • Python实现自动整理文件的脚本

    前言 工作上的文档和资料好几个月没整理了,因为平常太忙都是随手往桌面丢.整个桌面杂乱无章全是文档和资料.几乎快占满整个屏幕了,所有我必须要整理一下了.但是手动整理太费时间了,于是我想到了python. 示例 import os import glob import shutil ''' @Author: huny @date: 2020.12.06 @function: 桌面整理 ''' class FileType(): def __init__(self): self.filetype =

  • python实现自动整理文件

    前言: 平时工作没有养成分类的习惯,整个桌面杂乱无章都是文档和资料,几乎快占满整个屏幕了.所以必须要整理一下了,今天我们来看下用python如何批量将不同后缀的文件移动到同一文件夹. 演示效果: 使用前 使用后 代码: # # -*- coding:utf-8 -*- import os import glob import shutil import tkinter import tkinter.filedialog from datetime import datetime def star

  • Python实现自动整理文件的示例代码

    目录 一.前言 二.遍历文件 三.移动文件 四.自动整理文件 1.将图片集中存放 2.同步整理文件 3.获取文件属性 一.前言 今天我们就带大家来实现一下文件自动整理的操作.在我们日常生活中,文件总是杂乱无章的,这个时候就需要我们整理一下.但是文件太多的话整理起来是非常麻烦的,因此我们今天就来用Python实现文件的自动整理. 二.遍历文件 要整理文件,我们首先需要遍历文件.这里用两种方法,一种是直接获取指定目录下的所有文件和文件夹.另外一种就是获取指定目录下的文件.文件夹和子文件.文件夹...

  • Python实现自动化整理文件的示例代码

    目录 自动化整理计算机文件 1. 文件的自动分类 2. 文件和文件夹的快速查找 3. 自动清理重复文件 4. 批量转换图片格式 5. 按拍摄日期自动分类图片 自动化整理计算机文件 通过Python编程完成文件的自动分类.文件和文件夹的快速查找.重复文件的清理.图片格式的转换等常见工作. 1. 文件的自动分类 根据文件的扩展名将文件分类整理到不同文件夹中. 使用os和shutil模块 os模块提供了许多操作文件和文件夹的函数,可对文件或文件夹进行新建.删除.查看属性以及查找路径等操作. shuti

  • Python实现自动整理表格的示例代码

    目录 前言 原理 目标实现 运行效果 前言 今天,在工作的时候,我的美女同事问我有没有办法自动生成一个这样的表格: 第一列是院校+科目,第二列是年份,第三列是数量. 这张表格是基于这一文件夹填充的,之前要一个文件夹一个文件夹打开然后手动填写年份和数量 手动整理需要耗费较长时间,于是我便开发了一个 Python 程序用来自动生成归纳表格 利用正则表达式+OS库+openpyxl生成真题年份归纳表格 原理 第一步,遍历文件夹下的所有文件和子文件夹的名称,并获取子文件夹下的文件的年份信息和数量信息 第

  • python爬虫自动创建文件夹的功能

    该爬虫应用了创建文件夹的功能: #file setting folder_path = "D:/spider_things/2016.4.6/" + file_name +"/" if not os.path.exists(folder_path): os.makedirs(folder_path) 上面代码块的意思是: "os.path.exists(folder_path)"用来判断folder_path这个路径是否存在,如果不存在,就执行&

  • python实现自动清理文件夹旧文件

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 由于程序一直在不停地存图,因此需要监测图片文件夹的大小,一旦超过指定大小则删除一部分最早的图片. 采用开线程的方式,在线程里每隔一段时间键执行一次监测过程. 即  测文件夹大小->若超过则将文件夹里的文件按最后修改时间排序->删除一些最早的图片->删的过程中监测文件夹大小是否符合要求 # -*- coding: utf-8 -*- # # 开线程检测文件夹大小,超过指定大小,则按文件最后修改时间排序并删

  • python实现自动清理重复文件

    前言 大家好,又到了Python办公自动化系列. 今天分享一个系统层面的自动化案例: 「给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除」 主要涉及的知识点有: os模块综合应用 glob模块综合应用 利用filecmp模块比较两个文件 步骤分析 该程序实现的逻辑可以具化为: 遍历获取给定文件夹下的所有文件,然后通过嵌套循环两两比较文件是否相同,如果相同则删除后者. 实现问题的关键就变成了? 如何判断两个文件是否相同? 在这里我们可以使用filecmp模块,来看看官

随机推荐