Python 实现批量文件重命名工具

在现代软件开发中,图形用户界面 (GUI) 工具的创建是一个常见需求。对于那些需要频繁处理文件的任务,拥有一个简便的 GUI 工具尤为重要。在这篇博客中,我们将介绍如何使用 wxPython 创建一个简单的批量文件重命名工具。该工具可以选择一个文件夹并将其中所有 .txt 后缀的文件重命名为 .jpg
C:\pythoncode\new\rename.py

1. 环境准备

首先,我们需要安装 wxPython。如果你还没有安装,可以使用 pip 进行安装:

pip install wxPython
2. 设计 GUI 界面

我们使用 wxPython 来创建一个简洁的 GUI 界面。这个界面包含一个按钮,当点击按钮时可以选择文件夹,并进行文件重命名操作。

3. 实现代码

下面是完整的 Python 代码示例:

import wx
import osclass MyFrame(wx.Frame):def __init__(self, *args, **kw):super(MyFrame, self).__init__(*args, **kw)pnl = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)self.btn = wx.Button(pnl, label='选择文件夹')self.btn.Bind(wx.EVT_BUTTON, self.onSelectFolder)vbox.Add(self.btn, 0, wx.ALL | wx.CENTER, 5)pnl.SetSizer(vbox)self.CreateStatusBar()self.SetStatusText("欢迎使用文件重命名工具")def onSelectFolder(self, event):with wx.DirDialog(self, "选择一个文件夹", style=wx.DD_DEFAULT_STYLE) as dlg:if dlg.ShowModal() == wx.ID_OK:folder_path = dlg.GetPath()self.rename_files(folder_path)def rename_files(self, folder_path):for filename in os.listdir(folder_path):if filename.endswith('.txt'):txt_path = os.path.join(folder_path, filename)jpg_path = os.path.join(folder_path, filename[:-4] + '.jpg')os.rename(txt_path, jpg_path)self.SetStatusText("重命名完成")class MyApp(wx.App):def OnInit(self):self.frame = MyFrame(None, title="文件重命名工具", size=(300, 150))self.frame.Show()return Trueif __name__ == "__main__":app = MyApp()app.MainLoop()
4. 代码解释

让我们逐步解释这段代码的主要部分:

  1. 导入模块

    import wx
    import os
    
    • wx 模块用于创建图形界面。
    • os 模块用于操作文件和目录。
  2. 创建主窗口类 MyFrame

    class MyFrame(wx.Frame):def __init__(self, *args, **kw):super(MyFrame, self).__init__(*args, **kw)pnl = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)self.btn = wx.Button(pnl, label='选择文件夹')self.btn.Bind(wx.EVT_BUTTON, self.onSelectFolder)vbox.Add(self.btn, 0, wx.ALL | wx.CENTER, 5)pnl.SetSizer(vbox)self.CreateStatusBar()self.SetStatusText("欢迎使用文件重命名工具")
    
    • __init__ 方法:初始化窗口,创建按钮并绑定事件。
  3. 按钮点击事件处理

    def onSelectFolder(self, event):with wx.DirDialog(self, "选择一个文件夹", style=wx.DD_DEFAULT_STYLE) as dlg:if dlg.ShowModal() == wx.ID_OK:folder_path = dlg.GetPath()self.rename_files(folder_path)
    
    • 当按钮被点击时,打开文件夹选择对话框,并调用 rename_files 方法。
  4. 文件重命名逻辑

    def rename_files(self, folder_path):for filename in os.listdir(folder_path):if filename.endswith('.txt'):txt_path = os.path.join(folder_path, filename)jpg_path = os.path.join(folder_path, filename[:-4] + '.jpg')os.rename(txt_path, jpg_path)self.SetStatusText("重命名完成")
    
    • 遍历选定文件夹中的所有文件,将 .txt 后缀的文件重命名为 .jpg
  5. 应用启动

    class MyApp(wx.App):def OnInit(self):self.frame = MyFrame(None, title="文件重命名工具", size=(300, 150))self.frame.Show()return Trueif __name__ == "__main__":app = MyApp()app.MainLoop()
    
    • 创建 MyApp 实例并启动应用的主事件循环。
5. 运行应用

保存上述代码到一个 Python 文件中,例如 rename_tool.py,然后在终端或命令提示符中运行:

python rename_tool.py

你将看到一个窗口,点击“选择文件夹”按钮,选择包含 .txt 文件的文件夹,程序将自动将这些文件重命名为 .jpg
在这里插入图片描述

6. 总结

通过这篇博客,我们学习了如何使用 wxPython 创建一个简单的 GUI 工具,用于批量重命名文件夹中的文件。Happy coding!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web开发——HTMLCSS

1、概述 Web开发分前端开发和后端开发,前端开发负责展示数据,后端开发负责处理数据。 HTML&CSS是浏览器数据展示相关的内容。 1)网页的组成部分 文字、图片、音频、视频、超链接、表格等等 2)网页背后的本质 程序员写的前端…

重大活动网络安全保障建设及运营指南

在当今高度数字化的社会中,各类重大活动如会议、展览、赛事及庆典等正面临着日益复杂和严峻的网络安全威胁。这些威胁不限于网络入侵或数据泄露,更涉及到对基础设施、关键信息系统和公众舆论的复杂攻击,需要国际社会的密切合作和长期关注。因…

一张图看懂大模型性价比:能力、价格、并发量全面PK

最近,国内云厂商的大模型掀起一场降价风暴。火山引擎、阿里云、百度云等纷纷宣布降价,部分模型价格降幅据称高达99%,甚至还有些模型直接免费。 五花八门的降价话术,一眼望去遍地黄金。但事实真的如此吗?今天我们就拨开…

统计信号处理基础 习题解答10-2

题目 两个随机变量x和y,如果联合PDF分解为: 那么称他们为条件独立的。在上式中z是条件随机变量。 我们观察 其中, , 是相互独立的。证明和是条件独立的。给出条件变量是A。和是无条件独立么?也就是 成立么?为了回答这个问题&…

秋招突击——算法打卡——5/24——两数之和

题目描述 实现代码 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int addNumber 0;// 表示进位ListNode* res ListNode();ListNode* curNode res;while(l1 && l2){curNode.value (l1.value l2.value addNumber) % 10 addNumber (l1.value l2.value…

如何快速增加外链?

要快速增加外链并不难,相信各位都知道,难的是快速增加外链且没有风险,所以这时候GNB外链的重要性就出现了,这是一种自然的外链,何谓自然的外链,在谷歌的体系当中,自然外链指的就是其他网站资源给…

mysql 、oss 结合使用

以下是一个使用 Express、MySQL、OSS 和 axios 的 Node.js 示例。这个示例创建了一个 Express 服务器,该服务器有一个路由用于处理视频上传的请求。视频文件首先被上传到 OSS,然后视频的 OSS URL 被存储到 MySQL 数据库。 首先,我们需要安装必…

最大负载1kg!高度模块化设计!大象机器人智能遥控操作机械臂组合myArm MC

引入 近年来,市面上涌现了许多类似于斯坦福大学的 Alopha 机器人项目,这些项目主要通过模仿人类的运动轨迹来进行学习,实现了仿人类的人工智能。Alopha 机器人通过先进的算法和传感技术,能够精确复制人类的动作,并从中…

【stm32】——使用HAL库点灯

目录 一、安装STM32CubeMX 二、HAL库点亮LED灯 1.STM32CubeMX创建项目 2.进入Keil编写代码 三、采用中断控制LED灯的亮灭 1.创建项目 2.Keil中编写代码 四、Keil波形分析 总结 一、安装STM32CubeMX 具体操作可以参考下面链接: 搭建STM32开发环境——STM32CubeMX&a…

用Python pynput库捕捉每一次组合键的优雅舞步

哈喽,大家好,我是木头左! 一、初识pynput:键盘与鼠标的监控利器 当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的…

蓝桥杯单片机-国赛5——各外设时序记忆方法及手册重点提取

蓝桥杯涉及三个通讯外设,时序很难记忆,因此本文重点在于记录如何不背时序,直接看手册 注意:本文参考2024年第15届比赛手册讲解,没有英文基础也没关系 每一个外设会在第一张时序图中详细讲解,后续简写&…

网站工作原理

web发展史 1.0时代不可修改 2.0可修改,比如发微博 有以下问题: 课程2: 静态页面 html 动态页面 php 经过服务端的语言解释器,解析成html文件,剩下的就和静态流程一样 后面三个是web服务器,语言解释器&…

[Spring Boot]baomidou 多数据源

文章目录 简述本文涉及代码已开源 项目配置pom引入baomidouyml增加dynamic配置启动类增加注解配置结束 业务调用注解DS()TransactionalDSTransactional自定义数据源注解MySQL2 测试调用查询接口单数据源事务测试多数据源事务如果依然使用Transactional会怎样?测试正…

dubbo复习: (6)和springboot集成时的条件路由

根据指定的条件,对不满足条件的请求进行拦截。 比如拦截ip地址为192.168.31.227的请求。只需要在dubbo admin中的条件路由菜单创建相应的规则 enabled: true force: true runtime: true conditions:- host ! 192.168.31.227

vlan综合实验

一,实验拓扑: 二,实验需求: 1、pc1和pc3所在接口为access;属于vlan 2;P可以骄问pcepces不的一段;其中pc2可以访问pc4/pc5/pc6; 2、pc1/pc3与pc2/pc4/pc5/pc6不在同一网段; 3、所有pc通过DHCP获取Ip地址,且pc1/pc3可以…

轻松搞定LOGO渲染,用ComfyUI快速生成炫酷效果图!

一、准备工作一键搞定 必备资源:垫图和风格参考图 垫图:提供LOGO的基础参考。 风格参考图:确定LOGO的最终效果风格。 节点信息:一键配置 自定义节点(9):包括ComfyUI_Comfyroll_CustomNodes, …

【安装笔记-20240524-Windows-安装测试 7-Zip】

安装笔记-系列文章目录 安装笔记-20240524-Windows-安装测试 7-Zip 文章目录 安装笔记-系列文章目录安装笔记-20240524-Windows-安装测试 7-Zip 前言一、软件介绍名称:7-Zip主页官方介绍7-Zip 主要特征 二、安装步骤测试版本:24.05 (2024-05-14) for Wi…

burpsuite抓包响应报文乱码

1、响应报文中的中文信息乱码 2、解决办法 3、设置成功后重新发起请求

VMware安装Windows11

本文记录了我使用VMware安装Windows11的操作系统的流程,供大家参考。 创建虚拟机 新建虚拟机 直接默认点下一步 稍后安装操作系统 选择操作系统 本来应该选Windows11的但是我这个版本的VMware没有Windows11所以就选Windows10吧 命名虚拟机 固件类型 注意选择UE…