Python实用小工具(2)——文件批量顺序、连续重命名工具(附源码+exe文件)

在日常工作和学习中,我们经常会面临需要对一大批文件进行重命名的情况。手动一个个修改文件名的方式既费时又费力,因此,我们可以借助一些工具来实现文件的批量顺序连续重命名。今天,我们将介绍一个简单而实用的文件重命名工具,它基于Python和Tkinter库构建,具有友好的图形用户界面,使得文件重命名变得轻松愉快。

①如何使用

  • 选择文件夹:点击“浏览”按钮,选择包含待重命名文件的文件夹路径。所选路径将显示在界面上。

  • 设置参数:在界面中,你可以设置重命名的字符串(可为空)、起始索引和文件后缀(例如:.jpg)。这些参数将决定新文件名的形式。

  • 点击重命名:设置好参数后,点击“重命名”按钮,程序将自动扫描所选文件夹中的文件,按照设定的规则进行顺序连续重命名。

②示例演示

  • 假如路径"D:\MyDocumentation\公众号\小工具\修改文件名字\test"有如下6张jpg格式的图片:

  • 我想设置为fruit1.jpg-fruit6.jpg,需要设置参数如下:

  • 新文件名的形式。

  • 如果我想设置为1.jpg-6.jpg的格式,则只需要把字符串置空即可,设置参数如下:

  • 新文件名的形式。

③Python源码

import os
import tkinter as tk
from tkinter import filedialog
# 文件批量顺序、连续重命名工具
class FileRenamerApp:
    def __init__(self, master):
        self.master = master
        self.master.title("文件批量顺序连续重命名工具")

        self.path_var = tk.StringVar()
        self.string_var = tk.StringVar()
        self.i_var = tk.IntVar()
        self.suff_var = tk.StringVar()  # 新增变量用于存储文件后缀

        self.create_widgets()

    def create_widgets(self):
        # 用于显示所选路径的标签
        path_label = tk.Label(self.master, text="所选路径:")
        path_label.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)

        # 用于显示所选路径的输入框
        path_entry = tk.Entry(self.master, textvariable=self.path_var, state="readonly", width=50)
        path_entry.grid(row=0, column=1, padx=10, pady=10, sticky=tk.W)

        # 用于选择路径的按钮
        browse_button = tk.Button(self.master, text="浏览", command=self.select_path)
        browse_button.grid(row=0, column=2, padx=10, pady=10, sticky=tk.W)

        # 输入字符串的标签和输入框
        string_label = tk.Label(self.master, text="字符串(可为空):")
        string_label.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)
        string_entry = tk.Entry(self.master, textvariable=self.string_var, width=20)
        string_entry.grid(row=1, column=1, padx=10, pady=10, sticky=tk.W)

        # 输入起始索引的标签和输入框
        i_label = tk.Label(self.master, text="起始字符串(数字):")
        i_label.grid(row=2, column=0, padx=10, pady=10, sticky=tk.W)
        i_entry = tk.Entry(self.master, textvariable=self.i_var, width=10)
        i_entry.grid(row=2, column=1, padx=10, pady=10, sticky=tk.W)

        # 输入文件后缀的标签和输入框
        suff_label = tk.Label(self.master, text="文件后缀(例.jpg):")
        suff_label.grid(row=3, column=0, padx=10, pady=10, sticky=tk.W)
        suff_entry = tk.Entry(self.master, textvariable=self.suff_var, width=10)
        suff_entry.grid(row=3, column=1, padx=10, pady=10, sticky=tk.W)

        # 执行重命名的按钮
        rename_button = tk.Button(self.master, text="重命名", command=self.rename_files)
        rename_button.grid(row=4, column=0, columnspan=3, padx=10, pady=10)

        # 监听string_var的变化
        self.string_var.trace_add("write", self.check_string)

        # 用于显示输出结果的Text组件
        self.result_text = tk.Text(self.master, height=3, width=60, state="disabled")
        self.result_text.grid(row=5, column=0, columnspan=3, padx=10, pady=10)

    def select_path(self):
        selected_path = filedialog.askdirectory()
        if selected_path:
            self.path_var.set(selected_path)

    def check_string(self, *args):
        # 检查字符串是否为空,如果为空,设置默认值
        if not self.string_var.get():
            self.string_var.set("")

    def rename_files(self):
        path = self.path_var.get()
        string = self.string_var.get()
        i = self.i_var.get()
        suff = self.suff_var.get()  # 获取文件后缀
        if path and suff:  # 确保路径和文件后缀非空
            filelist = os.listdir(path)
            filelist.sort()
            total_num = len(filelist)
            success_count = 0

            for item in filelist:
                if item.endswith(suff):
                    src = os.path.join(path, item)
                    dst = os.path.join(os.path.abspath(path), f"{string}{i}{suff}")
                    try:
                        os.rename(src, dst)
                        i += 1
                        success_count += 1
                    except Exception as e:
                        print(e)
                        print('重命名目录失败\r\n')

            result_message = f'共有 {total_num} 个文件需要重命名,成功转换 {success_count} 个文件'
            self.result_text.configure(state="normal")
            self.result_text.delete("1.0", tk.END)
            self.result_text.insert(tk.END, result_message)
            self.result_text.configure(state="disabled")

if __name__ == "__main__":
    root = tk.Tk()
    app = FileRenamerApp(root)
    root.mainloop()

④生成的exe工具

关注微信公众号“MatpyMaster”,后台回复“文件重命名工具”,即可免费获取。

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值