当前位置: 首页 > news >正文

用AI写代码-批量文件命名小工具

任务描述

你是一个python高级开发人员,请用python开发一个gui应用,实现文件批量命名的功能

功能描述

  • 对指定目录的文件名增加编号前缀,前缀与文件名的连接字符可通过参数配置;
  • 添加编号前缀时,编号的位数可通过参数配置,编号位数不足则在前面用字符0补齐;
  • 对指定目录下的所有文件名删除编号前缀和连接符,连接符可配置;如果连接符为空则只删除编号前缀即可;
  • 如果文件名全部由数字组成,则文件名不变;
  • 人机界面上可以选择是增加编号前缀还是删除编号前缀;
  • 人机界面基于tkinter来实现,界面中有需要配置的参数设置,包括目录选择、连接符、编号位数、操作模式等

经过几次生成和反馈后的最终代码


import os
import re
import tkinter as tk
from tkinter import filedialog, messageboxclass FileRenamerApp:def __init__(self, master):self.master = masterself.master.title("文件批量重命名工具")self.master.geometry("500x300")# 初始化变量self.directory = tk.StringVar()self.separator = tk.StringVar(value="-")self.padding = tk.IntVar(value=3)self.mode = tk.IntVar(value=1)  # 1: 添加编号, 2: 删除编号# 创建界面组件self.create_widgets()def create_widgets(self):# 目录选择tk.Label(self.master, text="目标目录:", font=("TkDefaultFont", 9)).grid(row=0, column=0, sticky="e", padx=10, pady=5)tk.Entry(self.master, textvariable=self.directory, width=40, font=("TkDefaultFont", 9)).grid(row=0, column=1, padx=10, pady=5)tk.Button(self.master, text="浏览...", command=self.select_directory, font=("TkDefaultFont", 9)).grid(row=0, column=2, padx=5, pady=5)# 操作模式选择tk.Label(self.master, text="操作模式:", font=("TkDefaultFont", 9)).grid(row=1, column=0, sticky="e", padx=10, pady=5)tk.Radiobutton(self.master, text="添加编号前缀", variable=self.mode, value=1, font=("TkDefaultFont", 9)).grid(row=1, column=1, sticky="w")tk.Radiobutton(self.master, text="删除编号前缀", variable=self.mode, value=2, font=("TkDefaultFont", 9)).grid(row=1, column=2, sticky="w")# 连接符设置tk.Label(self.master, text="连接符:", font=("TkDefaultFont", 9)).grid(row=2, column=0, sticky="e", padx=10, pady=5)tk.Entry(self.master, textvariable=self.separator, width=5, font=("TkDefaultFont", 9)).grid(row=2, column=1, sticky="w", padx=10, pady=5)# 编号位数设置tk.Label(self.master, text="编号位数:", font=("TkDefaultFont", 9)).grid(row=3, column=0, sticky="e", padx=10, pady=5)tk.Entry(self.master, textvariable=self.padding, width=5, font=("TkDefaultFont", 9)).grid(row=3, column=1, sticky="w", padx=10, pady=5)# 执行按钮tk.Button(self.master, text="开始重命名", command=self.rename_files,bg="lightgreen", activebackground="green", font=("TkDefaultFont", 9)).grid(row=4, column=1, pady=20)def select_directory(self):"""选择目标目录"""path = filedialog.askdirectory(title="请选择目标目录")if path:self.directory.set(path)def rename_files(self):"""执行文件重命名操作"""directory = self.directory.get()separator = self.separator.get()padding = self.padding.get()mode = self.mode.get()if not directory:messagebox.showwarning("警告", "请先选择目标目录", icon='warning')returntry:files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]total_files = len(files)if total_files == 0:messagebox.showinfo("提示", "目标目录中没有可处理的文件", icon='info')returnif mode == 1:  # 添加编号前缀processed_count = 0for idx, filename in enumerate(sorted(files), start=1):old_path = os.path.join(directory, filename)base, ext = os.path.splitext(filename)new_filename = f"{idx:0{padding}d}{separator}{base}{ext}"new_path = os.path.join(directory, new_filename)os.rename(old_path, new_path)processed_count += 1messagebox.showinfo("成功", f"已成功处理 {processed_count} 个文件", icon='info')elif mode == 2:  # 删除编号前缀processed_count = 0for filename in files:# 跳过纯数字文件名(如"123.txt")if re.fullmatch(r"\d+\.\w+", filename):continue# 分离文件名和扩展名base, ext = os.path.splitext(filename)# 构建正则表达式模式if separator:  # 如果有指定连接符pattern = r"^(\d+){sep}".format(sep=re.escape(separator))else:  # 如果没有连接符pattern = r"^(\d+)"match = re.match(pattern, base)if match:# 只修改文件名部分,保留扩展名new_base = base[match.end():]new_filename = f"{new_base}{ext}"old_path = os.path.join(directory, filename)new_path = os.path.join(directory, new_filename)os.rename(old_path, new_path)processed_count += 1messagebox.showinfo("成功", f"已成功处理 {processed_count} 个文件", icon='info')except Exception as e:messagebox.showerror("错误", f"发生错误:{str(e)}", icon='error')if __name__ == "__main__":root = tk.Tk()# 设置支持中文的字体(根据系统实际情况调整)try:default_font = ("WenQuanYi Zen Hei", 9)root.option_add("*Font", default_font)except:passapp = FileRenamerApp(root)root.mainloop()

AI补充的总结

功能概述

  • 添加编号前缀:为文件名添加带补零的编号前缀(如001-文件名.txt)
  • 删除编号前缀:移除文件名开头的编号及连接符(如001-文件名.txt → 文件名.txt)
  • 支持复杂文件名:正确处理包含点、下划线等特殊字符的文件名
  • 保留扩展名:始终保留原始文件扩展名

操作步骤

  • 点击"浏览…"选择目标文件夹
  • 选择操作模式(添加/删除编号前缀)
  • 配置连接符(如-)和编号位数(如3)
  • 点击"开始重命名"执行操作

注意事项

  • 备份数据:首次使用时建议先备份重要文件
  • 文件排序:文件会按字母顺序处理,建议确保文件名有规律
  • 权限问题:如果遇到权限错误,请以管理员身份运行程序
  • 特殊字符:避免在连接符中使用正则表达式特殊字符(如.、*等)

示例场景

场景输入文件名连接符输出文件名
添加编号文件名.txt-001-文件名.txt
删除编号001-文件名.txt-文件名.txt
复杂文件名015.1512-20250708.1513_0006.csv.1512-20250708.1513_0006.csv

测试用例

输入文件名连接符预期输出
015.1512-20250708.1513_0006.csv.1512-20250708.1513_0006.csv
123测试文件.txt测试文件.txt
001-测试文件.txt-测试文件.txt
测试文件.txt不做修改
12345.txt不做修改
http://www.dtcms.com/a/500651.html

相关文章:

  • 门户网站建设的平台搭建怎样策划一个营销型网站
  • 小林coding|八股|MySQL
  • K8S(十四)—— K8s实战:HPA(Pod水平自动伸缩)完整部署与测试指南
  • wordpress本站导航在哪里免费海报制作模板
  • Java基础语法—最小单位、及注释
  • 损失函数(Loss Function)、反向传播(Backward Propagation)和优化器(Optimizer)学习笔记
  • actix-web开发环境搭建
  • 建设银行深分行圳招聘网站网站建设虚拟
  • 温州专业手机网站制作多少钱炽乐清网站建设
  • 燕之屋入选轻工业数字化转型“领航者”案例,引领行业智能化升级新篇章
  • 网站开发服务费属于哪种进项上海企业服务云代表啥
  • 给企业做网站的好处德州公司做网站
  • 个人备案可以做门户网站吗文创产品设计方案ppt
  • 登封哪里有做网站的设计一套网站费用
  • 网站建设方案实例阿里云装wordpress
  • 淮南网站开发seo公司软件
  • goofys或者s3fs将Minio桶挂载成本地目录测试记录
  • TENGJUN防水TYPE-C立插连接器:从技术细节到工业价值的深度解析
  • 男女性直接做的视频网站广州开发区官网
  • 门户网站建设的背景和意义哪些网站推广公司
  • 贵州贵阳网站开发容桂网站建设原创
  • React-Router Data Mode路由配置和Suspense懒加载
  • 江西商城网站建设广东省建设工程交易中心网站
  • 建网站知识企业系统管理软件有哪些
  • IotDB常规使用
  • 网站模板 psd最新企业名录搜索软件
  • Vue3-Devtools开发者工具制作与安装
  • emeinet亿玫网站建设app制作开发公司地址
  • 有没有什么专业做美业的网站四川创企科技有限责任公司
  • 芋道源码 - 基于滑块验证码(blockPuzzle), 登录实现