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 os

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("欢迎使用文件重命名工具")

    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 True

if __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 True
    
    if __name__ == "__main__":
        app = MyApp()
        app.MainLoop()
    
    • 创建 MyApp 实例并启动应用的主事件循环。
5. 运行应用

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

python rename_tool.py

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

6. 总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

会声会影调速怎么用 会声会影如何调整音频速度

会声会影是一款功能强大的视频编辑软件,可以帮助我们轻松的实现剪辑。 会声会影的操作简单易懂,界面简洁明快。适合家庭使用, 我们使用会声会影可以在家就能将视频剪辑成好莱坞大片。但是在使用的过程中,仍然会遇到一些操作上的问…

【Windows系统】解决Intel 6代CPU安装win7系统过程中无法操作键盘鼠标的问题

问题 微软表示,从 2016 年 7 月 17 日起,新的 Intel、AMD 和Qualcomm 处理器将仅支持 Windows 10,不再支持 Windows 7 和 8.1。因此,Intel 6代以后的CPU因为没有USB驱动无法完成win7系统的安装。 下文核心思想是通过老毛桃PE系统…

基于地理坐标的高阶几何编辑工具算法(2)——相交面裁剪

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理后处理 工具步骤 选中一个需要裁剪的面,点击“相交面裁剪”工具,多选裁剪模板面,空格执行。 应用场景 常用于基于遥感影像的建筑物几何面编辑。 算法输入 一个待裁剪的面&a…

如何找到docker的run(启动命令)

使用python三方库进行 需要安装python解释器 安装runlike安装包 pip3 install runlike 运行命令 runlike -p <container_name> # 后面可以是容器名和容器id&#xff0c;-p参数是显示自动换行实验 使用docker启动一个jenkins 启动命令为 docker run -d \ -p 9002:80…

【数据结构与算法篇】二叉树链式结构及实现

【数据结构与算法篇】二叉树链式结构及实现 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 4. 二叉树链式结构的实现 4.1 前置说明 4.2 二叉树的遍历 4.2.1 前序、中序以及…

【大模型】Spring AI对接ChatGpt使用详解

目录 一、前言 二、spring ai介绍 2.1 什么是Spring AI 2.2 Spring AI 特点 2.3 Spring AI 为开发带来的便利 2.4 Spring AI应用领域 2.4.1 聊天模型 2.4.2 文本到图像模型 2.4.3 音频转文本 2.4.4 嵌入大模型使用 2.4.5 矢量数据库支持 2.4.6 用于数据工程ETL框架 …

云动态摘要 2024-05-24

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]大模型知识引擎体验招募 腾讯云 2024-05-21 大模型知识引擎产品全新上线&#xff0c;为回馈新老客户&#xff0c;50万token免费送&#xff0c;开通服务即领取&#xff01; 云服…

蓝桥杯杨辉三角

PREV-282 杨辉三角形【第十二届】【蓝桥杯省赛】【B组】 &#xff08;二分查找 递推&#xff09;&#xff1a; 解析&#xff1a; 1.杨辉三角具有对称性&#xff1a; 2.杨辉三角具有一定规律 通过观察发现&#xff0c;第一次出现的地方一定在左部靠右的位置&#xff0c;所以从…

优化css样式的网站

一、按钮的css样式 https://neumorphism.io/#e0e0e0https://neumorphism.io/#e0e0e0 二、渐变样式 Fresh Background Gradients | WebGradients.com &#x1f48e;Come to WebGradients.com for 180 beautiful linear gradients in CSS3, Photoshop and Sketch. This collect…

IT革命浪潮:技术革新如何改变我们的生活与工作

一、技术革新与行业应用 当前的IT行业正处于前所未有的技术革新阶段。其中&#xff0c;量子计算和虚拟现实是两项引人注目的技术。 量子计算&#xff1a;量子计算以其超越传统计算的潜力&#xff0c;正在逐步从理论走向实践。在材料科学、药物研发和气候模型等复杂计算领域&a…

JAVA中的代理:代理的作用+静态代理的实现+动态代理的实现

JAVA中的代理&#xff1a;代理的作用静态代理的实现动态代理的实现 一、代理的作用二、静态代理实现方式2.1 实现原理2.2 示例 三、动态代理 一、代理的作用 代理是一种设计模式 主要目的&#xff1a;提供了对目标对象另外的访问方式 代理的好处&#xff1a; 目标对象可以间…

前端开发攻略---用Vue实现无限滚动的几种方法

目录 1、原理 2、使用CSS动画 代码&#xff1a; 3、使用JS实现 代码&#xff1a; 1、原理 复制内容&#xff1a;将需要滚动的内容复制一次&#xff0c;并将这些副本放置在原始内容的后面。这样&#xff0c;当用户滚动到内容的末尾时&#xff0c;就会无缝地切换回到内容的起…

链表-设计LRU缓存结构

题目描述&#xff1a; 代码实现&#xff1a;这里记录了根据LRU算法原理最直接理解的代码实现。 import java.util.*;//存储输入内容&#xff0c;记录访问权值 class CounterInfo {int key;int value;int times;//代表key对应的权值&#xff0c;值越小优先级越高public Counter…

【学习笔记】Webpack5(Ⅱ)

Webpack 3、高级篇 3.1、提升开发体验 —— SourceMap 3.2、提升打包速度 3.2.1 HotModuleReplacement 3.2.2 OneOf 3.2.3 Include / Exclude 3.2.4 Cache 3.2.5 Thread 3.3、减少代码体积 …

Strategy设计模式

Strategy设计模式举例。 看图&#xff1a; 代码实现&#xff1a; #include <iostream>using namespace std;class FlyBehavior { public:virtual void fly() 0; };class QuackBehavior { public:virtual void quack() 0; };class FlyWithWings :public FlyBehavior …

轻量级 K8S 环境 安装minikube

文章目录 操作系统DockerDocker CE 镜像源站使用官方安装脚本自动安装 &#xff08;仅适用于公网环境&#xff09;安装校验Docker代理docker permission denied while trying to connect to the Docker daemon socket minikubekubectl工具minikube dashboard参考资料 操作系统 …

WORD、PPT技巧

WORD技巧 编辑设置 word标题导航窗口怎么调出word2016&#xff0c;缩小了页面&#xff0c;可是怎么是竖着的一页一页排列啊&#xff1f;以前不是好几页横排着的么&#xff1f;怎么设置&#xff0c;求救&#xff1a;在Word标题栏那一行找到“视图”&#xff0c;点击“显示比例…

刷题之路径总和Ⅲ(leetcode)

路径总和Ⅲ 这题和和《为K的数组》思路一致&#xff0c;也是用前缀表。 代码调试过&#xff0c;所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…

HCIE是什么证书?为什么要考?

每当我发一些关于HCIE的话题时&#xff0c;总有小伙伴过来问“啥是HCIE啊&#xff1f;”今天就一起来了解下&#xff0c;到底什么是HCIE&#xff1f;为什么这么多人都要考HCIE? HCIE是华为认证ICT专家的缩写&#xff0c;它是华为认证体系中最高级别的ICT技术认证。HCIE全称为H…

JUnit5禁用测试用例

什么是禁用测试用例&#xff1a; 给用例添加禁用标识被禁用的用例执行后会添加跳过的状态可以禁用测试类、也可以禁用测试方法 使用场景&#xff1a; 在bug未解决之前&#xff0c;对应的测试用例则无需执行版本更新&#xff0c;某些用例暂时不可以 Disable注解&#xff1a;…