python(53) : 文件夹内文件等分工具[Windows工具(7)]

Python 安装(小白基础篇) Python版本选择 安装教程,转移环境 阅读详情

1.说明

一款简洁实用的文件分组工具,能够将文件夹中的文件按指定数量自动分组到多个子文件夹中,轻松管理大量文件。

✨ 功能特性

  • 🖱️ 拖拽操作:简单直观的图形界面,支持拖拽文件夹
  • 📊 智能分组:按指定数量自动将文件分配到多个子文件夹
  • 🔢 灵活配置:可自定义每组文件数量(默认 100 个)
  • 📁 自动创建:自动创建 part_1、part_2、part_3 等分组文件夹
  • 🚀 批量处理:适合处理包含大量文件的文件夹
  • ✅ 实时反馈:显示处理进度和分组结果

📋 功能说明

主要用途

  • 将大量文件分批处理,便于管理
  • 按批次整理照片、文档等文件
  • 为文件分组便于分批上传或传输
  • 整理下载文件、日志文件等

工作原理

  1. 扫描指定文件夹中的所有文件(不包括子目录)
  2. 按照设定的数量将文件分组
  3. 在原文件夹内创建 part_1、part_2、part_3 等子文件夹
  4. 将文件移动到相应的子文件夹中(原位置文件会被移走)

🔧 安装依赖

环境要求

  • Python 3.6+
  • Windows/Linux/macOS

依赖包安装

pip install tkinterdnd2

注意:tkinter 通常随 Python 自带,无需额外安装

🚀 使用方法

启动程序

python 将文件夹内文件等分.pyw

或直接双击 .pyw 文件(Windows 下无命令行窗口)

操作步骤

  1. 设置分组数量

    • 在"每组文件数量"输入框中输入期望的每组文件数(默认 100)
    • 可根据实际需求调整
  2. 拖入文件夹

    • 将需要分组的文件夹拖拽到蓝色区域
    • 确保拖入的是文件夹而不是单个文件
  3. 自动分组

    • 程序自动开始处理
    • 文件将被移动到新创建的 part_X 子文件夹中
  4. 查看结果

    • 界面底部显示处理结果
    • 包括总文件数、分组数、每组数量和处理位置

📊 使用示例

示例 1:基本使用

操作前:

📁 照片集合/
  ├── IMG_0001.jpg
  ├── IMG_0002.jpg
  ├── IMG_0003.jpg
  ├── ...
  └── IMG_0250.jpg  (共 250 个文件)

设置每组 100 个文件,拖拽"照片集合"文件夹

操作后:

📁 照片集合/
  ├── 📁 part_1/
  │   ├── IMG_0001.jpg
  │   ├── IMG_0002.jpg
  │   ├── ...
  │   └── IMG_0100.jpg  (100 个文件)
  ├── 📁 part_2/
  │   ├── IMG_0101.jpg
  │   ├── IMG_0102.jpg
  │   ├── ...
  │   └── IMG_0200.jpg  (100 个文件)
  └── 📁 part_3/
      ├── IMG_0201.jpg
      ├── IMG_0202.jpg
      ├── ...
      └── IMG_0250.jpg  (50 个文件)

结果显示:

✅ 成功:
250 个文件已分为 3 组
每组最多 100 个
位置:C:\Users\xxx\照片集合

示例 2:小数量分组

操作前:

📁 文档/
  ├── doc1.docx
  ├── doc2.docx
  ├── ...
  └── doc25.docx  (共 25 个文件)

设置每组 10 个文件

操作后:

📁 文档/
  ├── 📁 part_1/  (10 个文件)
  ├── 📁 part_2/  (10 个文件)
  └── 📁 part_3/  (5 个文件)

⚙️ 技术实现

核心函数

  • split_files_by_count() - 文件分组核心逻辑

    • 扫描文件夹中的所有文件
    • 按指定数量分组
    • 创建子文件夹并移动文件
  • on_drop() - 拖拽事件处理

    • 验证输入参数
    • 调用分组函数
    • 显示处理结果

主要依赖

  • tkinter - GUI 界面框架
  • tkinterdnd2 - 拖拽功能支持
  • os - 文件系统操作
  • shutil - 文件移动操作

⚠️ 注意事项

  1. 文件会被移动:文件会从原位置移动到子文件夹,不是复制

    • 如需保留原文件,可修改代码第 31 行,将 shutil.move 改为 shutil.copy2
  2. 仅处理根目录文件:只处理文件夹根目录的文件,不会递归处理子目录

  3. 数量验证:必须输入大于 0 的整数,否则会提示错误

  4. 空文件夹:如果文件夹中没有文件,会提示"该文件夹中没有文件"

  5. 子文件夹已存在:

    • 如果目标文件夹已存在 part_X 子文件夹,程序会继续使用(不会删除原有内容)
    • 建议在干净的文件夹中使用,避免冲突
  6. 权限问题:确保对目标文件夹有读写权限

🔄 复制模式 vs 移动模式

当前模式:移动(默认)

shutil.move(src, dst)  # 文件会从原位置移走

如需改为复制模式

修改代码第 31 行:

shutil.copy2(src, dst)  # 保留原文件,复制到新位置

💡 使用技巧

  1. 快速整理:处理大量下载文件、截图时特别实用
  2. 分批上传:将大量文件分组后,可分批次上传到云盘
  3. 项目管理:按数量分组项目文件,便于分批处理
  4. 备份策略:分组后可以分批备份到不同存储设备

🐛 常见问题

Q: 拖拽后提示"请拖入一个有效的文件夹"?
A: 请确保拖入的是文件夹而不是单个文件,工具仅支持文件夹操作。

Q: 可以处理子文件夹中的文件吗?
A: 当前版本只处理根目录的文件,不会递归处理子文件夹中的文件。

Q: 文件会被覆盖吗?
A: 不会。程序使用 shutil.move,如果目标位置已存在同名文件,会抛出错误而不是覆盖。

Q: 可以撤销操作吗?
A: 工具本身不提供撤销功能,但由于文件只是被移动到子文件夹,可以手动将文件移回原位置。

Q: 分组顺序是什么?
A: 按照 os.listdir() 的返回顺序,通常是文件名的字母/数字顺序。

Q: 处理大文件夹会卡顿吗?
A: 移动文件速度很快,通常不会卡顿。但文件数量特别多(数万个)时可能需要等待几秒。

📊 性能说明

  • 小规模(< 1000 文件):几乎瞬间完成
  • 中等规模(1000-10000 文件):通常在 1-5 秒内完成
  • 大规模(> 10000 文件):可能需要 10-30 秒

注:性能取决于硬盘速度和文件数量

2.python代码

import os
import shutil
import tkinter as tk
from tkinter import messagebox
from tkinterdnd2 import DND_FILES, TkinterDnD


def split_files_by_count(folder_path, count_per_folder):
    """
    将文件夹中的文件按指定数量分组,移动到 part_1, part_2, ... 子文件夹中
    """
    # 获取所有文件(排除子目录)
    all_files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

    if not all_files:
        return 0, 0  # 没有文件

    total_files = len(all_files)
    groups = 0

    # 按数量分组
    for i in range(0, total_files, count_per_folder):
        groups += 1
        group_folder = os.path.join(folder_path, f"part_{groups}")
        os.makedirs(group_folder, exist_ok=True)

        batch = all_files[i:i + count_per_folder]
        for filename in batch:
            src = os.path.join(folder_path, filename)
            dst = os.path.join(group_folder, filename)
            shutil.move(src, dst)  # 移动文件(改为 copy 可复制)

    return total_files, groups


def on_drop(event):
    # 获取拖入的路径(去除花括号)
    folder_path = event.data.strip('{}')

    if not os.path.isdir(folder_path):
        status_label.config(text="❌ 错误:请拖入一个有效的文件夹!", fg="red")
        return

    try:
        num = int(entry.get().strip())
        if num <= 0:
            raise ValueError
    except ValueError:
        status_label.config(text="❌ 错误:请输入大于 0 的整数!", fg="red")
        return

    # 开始分组
    try:
        total, groups = split_files_by_count(folder_path, num)
        if total == 0:
            status_label.config(text="🟡 提示:该文件夹中没有文件。", fg="orange")
        else:
            status_label.config(
                text=f"✅ 成功:\n{total} 个文件已分为 {groups} 组\n每组最多 {num} 个\n位置:{folder_path}",
                fg="green"
            )
    except Exception as e:
        status_label.config(text=f"❌ 错误:{str(e)}", fg="red")


# ========== GUI 界面 ==========
root = TkinterDnD.Tk()
root.title("文件分组工具 - 拖拽文件夹")
root.geometry("500x300")

# 标题
tk.Label(
    root,
    text="文件分组工具",
    font=("微软雅黑", 16, "bold"),
    fg="blue"
).pack(pady=10)

# 拖拽区域
drop_label = tk.Label(
    root,
    text="请将文件夹拖拽到此处\n\n支持自动分组",
    bg="lightblue",
    fg="black",
    font=("微软雅黑", 12),
    relief="solid",
    width=50,
    height=4,
    justify="center"
)
drop_label.pack(padx=20, pady=10)

# 数量输入
input_frame = tk.Frame(root)
input_frame.pack(pady=5)

tk.Label(input_frame, text="每组文件数量:", font=("微软雅黑", 10)).pack(side="left")
entry = tk.Entry(input_frame, width=10, font=("微软雅黑", 10))
entry.insert(0, "100")  # 默认值
entry.pack(side="left", padx=5)

# 状态显示
status_label = tk.Label(
    root,
    text="等待拖入文件夹...",
    bg="white",
    fg="gray",
    font=("微软雅黑", 10),
    anchor="w",
    justify="left",
    height=4,
    wraplength=480,
    relief="sunken"
)
status_label.pack(padx=20, pady=10, fill="x")

# 启用拖拽
drop_label.drop_target_register(DND_FILES)
drop_label.dnd_bind('<<Drop>>', on_drop)

# 运行主循环
root.mainloop()

python win7 升级pip 系统:windows 7 版本:Python 3.5 第一步,在Windows PowerShell中输入cd +“你文件夹的位置” &lt;img src="https://pic1.zhimg.com/v2-fdbb6dec09fbf26845ce54f118a53a70_b.png" data-rawwidth="438" da 阅读详情

相关推荐

Windows10 将某一台主机上修改过的文件分发到其他主机,完成各个主机间的文件同步

目录 一、前言 二、环境说明 三、在win10中共享文件夹 三、局域网中其他主机如何访问被共享的文件夹 四、另一种访问共享文件夹的方式 五、将修改过的文件更新到远程主机上 一、前言 最近需要通过多台主机共同完成一个任务,要求所涉及的主机都要运行一些代码。我本来是在一台主机上写完代码,然后将其他主机所涉及的代码文件通过远程传输复制到对应主机上。但我后来觉得这样太麻烦了,因为每次修改代码文件都需要把文件复制到对应的主机上。所以决定将这个文件同步过程也在代码中自动化,以使得我能够很方便地不断调试。

G_G_L_GL的博客 915

排坑记:_tkinter.TclError: invalid command name “tkdnd::drop_target“

python GUI工具tkinter应用中,需要拖动文件到窗口,这个功能tkinter是没有的,需要pip install tkinterdnd2 这个包,然后from tkinterdnd2 import * 这样就可以使用拖拽文件到窗口功能了。

bigfishfish的博客 1562

批量重命名工具:轻松管理你的文件名

对大量文件进行重命名操作

m0_66891601的博客 1372

【Python】基于Tkinter库实现文件夹拖拽与选择功能

通过结合使用 Tkinter 和。

采菊东篱下,Python满乾坤! 1872

pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例

系列文章目录 Quantum Espresso Hands-On实战训练(三)——DOS计算 文章目录系列文章目录计算过程pwscf直接得到等能面pwscf和wannier90得到等能面pwscf直接得到等能面1. scf2. nscf3. 后处理pwscf和wannier90得到等能面1. Kpoints2. scf3. nscf4. pw2wan及wannier90.x5. XCrySDen可视化 计算过程 pwscf直接得到等能面 pwscf和wannier90得到等能面 pwscf直接得到等能面

weixin_45973682的博客 5070

基于大模型的重度膝关节骨关节炎全流程预测与治疗方案研究

本研究基于大模型构建了重度膝关节骨关节炎(KOA)预测体系,涵盖术前风险预测、手术方案优化、术中监测和术后康复指导全流程。通过分析临床和影像数据,模型在手术风险预测准确率(85%)、并发症预警(血栓预测准确率88%)等方面显著优于传统方法。研究实现了临床数据与AI技术的深度融合,术前预测指导麻醉选择(如高危患者推荐椎管内麻醉),术中实时监测生命体征,术后个性化康复方案使患者HSS评分平均提升45分。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1390

文件轻松按数量分组,管理更灵活便捷!

1、这个方案的实施,需要使用到“天图工作室”的工具,有需要的小伙伴可以去浏览器中搜索进入网站软件中心,就可以免费下载“天图文件管理”获取。4、接着,在“任务名称”这里选择“按文件数量归类”功能,之后输入分组中文件的数量,并选择文件夹组的命名,再点击“选择”按钮,选择保存位置。2、在下载完成后打开,点击左边的“文件智能管理箱”功能,随后点击页面上方的“文件批量管理任务”功能,切换到该页面。3、接下来,点击这个位置的“添加文件”或者“添加文件夹中的文件”按钮,选择需要的文件进行添加。

htqkll123的博客 813

Stata:手动安装ivreghdfe包的完整指南与常见问题解决

本文提供了Stata中手动安装ivreghdfe包的完整指南,包括准备工作、详细安装步骤及常见问题解决方案。ivreghdfe作为处理高维固定效应模型的强大工具,依赖ftools、reghdfe和ivreg2三个核心组件,手动安装可避免版本冲突问题。文章还分享了进阶使用技巧,如并行计算加速和保存固定效应估计值,助力用户高效完成工具变量回归分析。

weixin_29251131的博客 929

Python GUI(Tkinter)通过TkDND和TkinterDnD2实现文件拖放

Tkinter是py3自带的库,可以实现GUI,但是要实现拖放就需要TkDND和TkinterDnD2了;在TkinterDnD2的官方上,有说明在使用前要先安装tkDND2

Kearney 1万+

LVGL与STM32的理解(基于正点原子资料)

我们要在lcd_draw_fast_rgb_color里面实现对屏的具体操作(也就是在这里实现自己的代码)。lcd_set_window、lcd_write_ram_prepare、lcd_wr_data这三个函数是本例程LCD屏的控制函数(也就是自己写的函数)。以下是stm32工程的文件目录,GUI_APP也可以忽略(细节参考正点原子例程):这里主要是再次加强一下印象,主要就是把。,里面的lcd_init()与lcd_display_dir是。它们都是LVGL的接口,按照它们的需求,把内容给它们即可。

weixin_39257775的博客 3437

ESP32-IDF开发之旅 外设篇④ 串口通信 Uart

ESP32-S3 UART串口通信详解 本文介绍了ESP32-S3的UART串口通信配置流程,涵盖硬件引脚分配、参数设置、数据收发等关键步骤。

单片机菜鸟哥的博客 495

【Python】Windows微信清理工具

本工具采用Python编写,先读取“%userprofile%\AppData\Roaming\Tencent\WeChat\All Users\config\3ebffe94.ini”,确定WeChat Files文件夹的位置,进行扫描,列出所有登陆过的微信号,让用户选择清理的对象,再列出菜单,通过if语句让用户来决定删除哪些数据,最后进行删除操作。 Python]纯文本查看复制代码 ? 01 02 03 04 05 06 07 ..

china365love的博客 1257

软件可靠性设计

本文系统介绍了软件可靠性设计与建模的理论框架和实施方法。首先从可靠性定义、核心思想和与建模的关系等理论基础出发,重点阐述了模块化设计、冗余容错、异常处理等六类可靠性设计方法及其技术栈。文章详细分析了可靠性设计在软件生命周期各阶段的应用,并深入探讨了设计与建模的深度结合机制,包括参数影响、验证方法和量化指标。最后提出了覆盖设计、开发、测试和运行四个阶段的落地策略,形成完整的"设计-建模-运行"流程体系。全文强调通过预防性设计和量化建模相结合的方法提升软件系统的可靠性和稳定性。

moton2017的博客 896

终极指南:如何在Windows Vista/7/Server 2008上安装最新Python 3.14

还在为老旧Windows系统无法运行现代Python版本而烦恼吗?PythonVista项目为你提供了完美的解决方案!这个开源项目专门为Windows Vista SP2、Windows Server 2008 SP2以及Windows 7等老旧系统提供了Python 3.8到3.14的全系列安装程序,让你在不升级操作系统的前提下享受最新的Python功能。 ## 🚀 快速开始:5分钟完成Py

gitblog_00018的博客 353

C#实现鼠标点击任意绝对位置(附完整源码)

C#实现鼠标点击任意绝对位置(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 479

uni-app:实现APP设置手机闹钟+取消闹钟+响铃重复/文字等,帮用户设置好闹钟并备注文本,uni-app设置安卓系统闹钟和苹果ios系统闹钟(uniapp调用手机上的闹钟,详细示例代码demo)

uniapp设置安卓和iOS闹钟的插件,uni-app设置安卓系统闹钟,uniapp设置苹果ios系统闹钟,uniapp设置定时闹铃的完整解决方案,UniApp设置手机闹钟,uniApp如何设置手机闹铃,uniapp设置闹钟,设置闹钟提醒,uni-app设置安卓系统闹钟_通过uniapp设置原声闹钟,调用android系统闹钟,如何在App中启动系统闹钟,uniapp如何取消闹钟,通过调用ios的原生接口来设置手机闹钟,uni-app 调用手机闹钟功能,uniap调用ios系统闹钟,uniapp调用手机上的

✅ 精选推荐文章 4234

使用os模块实现展示目录下的文件和文件夹

Windows 10家庭中文版,Python 3.6.4 今天学习了os模块,下面是使用它开发的一个展示目录下的文件和文件夹的函数,代码如下: 1 import os 2 3 # deep大于等于1的整数,默认为1; 4 # deep为1时,用于显示当前目录下的文件和文件夹; 5 # deep控制显示的当前目录下的层级,当前为1,每深入一层(进入下一级文...

aimianwo1708的博客 638

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何使用python的os模块调用Windows指令(everything)

如果要删除呢?也简单:假设删除d盘下的123文件夹 del/s/q d:\123*.* ----(用于删除文件夹下的子文件) rd/s/q d:\123 ----(用于删除文件夹) /s参数为子目录 /q参数为不用确认 这是在Windows下面的指令操作,文件夹被删除成功 #coding=gbk import os os.system("rd/s/q d:\123") 这是在pycharm下面用python指令实现的删除文件夹,只要将Windows指令放在os.system里面就能实现相同的功能 以下是

qq_43592253的博客 1378

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

X-NUCLEO-53L9A1 GUI不可用?用Python自写多区ToF热力图调试工具

ToF(飞行时间)测距技术通过在红外光往返时间中计算距离,已广泛应用于机器人避障、存在检测和手势识别等场景。基于VL53L9A1的多区ToF传感器,可将视野划分为4x4或8x8网格,同时输出各区域距离与反射率信息,极大提升了环境感知的维度。然而在嵌入式开发中,官方评估软件常因Java环境、驱动版本或固件不匹配而提示“GUI not available”,导致可视化调试无法进行。本文从串口通信协议解析入手,介绍如何利用Python与Tkinter构建轻量级热力图面板,实时呈现多区测距数据,并总结排查硬件链路、

weixin_34204722的博客 477

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

PaddleHub darknet53_imagenet 图像分类模块实战:DarkNet53 骨干网络的安装、命令行与 Python API 预测指南

`darknet53_imagenet` 是 PaddleHub 生态中基于 PaddlePaddle 实现的图像分类预训练模块,网络主体为 Joseph Redmon 提出的 DarkNet53——即 YOLOv3 目标检测框架中承担特征提取任务的 Backbone。本文以该模块的官方英文文档为主体,结合仓库内 [module.py](https://link.gitcode.com/i/ea9

gitblog_00732的博客 278

Windows 7系统Python兼容性解决方案:从安装到优化的完整指南

在企业级应用与个人开发场景中,Windows 7系统仍占据一定市场份额,但官方Python自3.9版本起已停止对其支持。本文将系统介绍如何通过PythonWin7项目实现老旧系统的Python环境部署,为"老旧系统Python解决方案"提供一站式技术支持,帮助用户在不升级操作系统的前提下使用最新Python功能。 ## 一、系统环境检测与准备 ### 1.1 兼容性前置检查 在开始安装前,需

gitblog_00810的博客 344

windows安装python3.7

下载 在python的官网下载python对应版本:https://www.python.org/downloads/windows/ 64位下载Windows x86-64 executable installer 版本 32位下载Windows x86 executable installer 版本 打开链接如下图,版本会一直更新,选择任意一个适合自己电脑的版本就好 python3.7.0传送...

直到世界的尽头 2966

用python重复下载文件_利用python查找Windows中重复的文件

重复的文件(文件的不同副本)自有它们存在的意义,但是如果同一文件大量的重复存在或者被保存成了不同的文件名、保存在了不同的文件夹下面,那将会让我们蛋疼不已。这篇文章向读者展示了怎样在Windows系统里使用Python程序处理这些文件。电脑用户经常会遇到重复文件带来的麻烦。有时候我们不经意间错误地创建了许多相同文件,并且给它们取了不同的文件名,有时候我们把同一个文件复制到了不同的文件夹里面,甚至复制...

weixin_39827036的博客 253

以下不属于python的pip工具命令的选项是_python 2.6 2.7 pip

二,环境推荐 windows10 64 位(系统都可以) python 2.7.15 selenium 2.53.6...2、使用 pip 工具安装 Selenium:pip install Selenium==2.53.6(达到 100%才......jieba库是第三方库,不是安装包自带,因此,需要通过pip指令安装, 具体安装方法请...1 /2 相关文档推荐 Python电子教案6-1 组...

weixin_39689428的博客 1904

DC53折刀88像素项目:本地AI图像处理工具部署与测试全指南

图像处理与像素艺术生成是计算机视觉和数字内容创作领域的基础技术,其核心原理是通过算法对图像像素进行变换、重采样或风格迁移,从而改变图像的视觉表现。在技术实现上,通常依赖于深度学习模型和GPU加速计算,这赋予了工具强大的风格化能力和高效的批量处理性能。对于开发者、设计师和内容创作者而言,本地化部署的AI图像处理工具提供了可控、高效且可集成的解决方案,尤其适用于游戏素材制作、社交媒体内容生成和自动化设计流水线等场景。本文以“DC53折刀88像素”项目为例,聚焦于其**环境部署**与**功能测试**流程,详细介绍

weixin_34357928的博客 456
上一篇: python(52) : 文件夹内文件递归提取工具[Windows工具(6)]
下一篇: python(54) : centos7使用systemd托管python/shell服务, 开启自启, 自动重启
楽焫旒璡
博客等级 码龄10年 357粉丝 365原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值