吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1751|回复: 46
上一主题 下一主题
收起左侧

[Python 转载] 调教DeepSeek编写文件名批量修改工具

  [复制链接]
跳转到指定楼层
楼主
manglang 发表于 2025-3-15 11:15 回帖奖励
需要给上百个文件改名,若一个个按流程去改会很繁琐:
一、按F2,二、改名输入汉字,三、回车。
可否将某指定目录中的文件名全部以表格的形式显示成一列,用户在对应的第二列输入目标文件名,输入完毕,点击确定键,全部自动改名?
给DeepSeek提交需求,大意如下:

界面要易于操作,充分利用窗口面积,不要只占用最左边部分。意思是文件名在当前窗口要多列显示。
如果是给图片命名,那么在界面上直观看到图片缩略图就显得很重要,可以避免命名出错。所以请在界面上再加一列,显示该文件的缩略图。
文件扩展名要保留,不必输入,改的只是文件名。遇到相同的文件名时请在文件名后加序号,不要中断运行或报错。
现在要先删除原文件名才能再输入新文件名,还是很啰嗦,请设计成鼠标点击文件名的时候自动选中原文件名,输入的字符直接替换原文件名。
窗口尺寸请设计成1600*920,每行显示9个文件信息。

最终产品运行界面:
代码附后:

[Python] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import os
import tkinter as tk
from tkinter import ttk, filedialog
from PIL import Image, ImageTk
from pathlib import Path
from tkinter import ttk
 
class UltraRenamer:
    def __init__(self, master):
        self.master = master
        self.master.title("极速批量重命名工具")
        self.master.geometry("1630x960")
         
        # 配置主界面
        self.main_frame = ttk.Frame(self.master)
        self.main_frame.pack(fill=tk.BOTH, expand=True)
 
        # 创建带缩放的画布
        self.canvas = tk.Canvas(self.main_frame)
        self.scrollbar = ttk.Scrollbar(self.main_frame, orient="vertical", command=self.canvas.yview)
        self.scroll_frame = ttk.Frame(self.canvas)
 
        # 画布配置
        self.canvas.configure(yscrollcommand=self.scrollbar.set)
        self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.canvas.create_window((0,0), window=self.scroll_frame, anchor="nw")
 
        # 工具栏
        self.toolbar = ttk.Frame(self.master)
        self.toolbar.pack(fill=tk.X, pady=3)
        ttk.Button(self.toolbar, text="打开目录", command=self.load_dir, width=10).pack(side=tk.LEFT, padx=5)
        ttk.Button(self.toolbar, text="执行重命名", command=self.safe_rename, width=12).pack(side=tk.LEFT)
        ttk.Label(self.toolbar, text="每行显示9个项目 | 点击输入框自动选中原名称", foreground="#666").pack(side=tk.LEFT, padx=20)
 
        # 初始化变量
        self.file_data = []
        self.thumb_refs = []
        self.input_vars = []
 
    def load_dir(self):
        path = filedialog.askdirectory()
        if not path: return
         
        # 清空现有内容
        for widget in self.scroll_frame.winfo_children():
            widget.destroy()
        self.file_data.clear()
        self.input_vars.clear()
 
        # 获取文件列表
        files = sorted(Path(path).iterdir(), key=lambda f: f.stat().st_mtime)
         
        # 计算布局参数
        COLUMNS = 14
        thumb_size = 80
        item_width = 1640 // COLUMNS - 15
 
        # 创建网格布局
        for idx, file in enumerate(files):
            row = idx // COLUMNS
            col = idx % COLUMNS
             
            frame = ttk.Frame(self.scroll_frame, width=item_width)
            frame.grid(row=row, column=col, padx=3, pady=3, sticky="nsew")
 
            # 缩略图
            img_label = ttk.Label(frame)
            if file.suffix.lower() in Image.registered_extensions():
                try:
                    img = Image.open(file)
                    img.thumbnail((thumb_size, thumb_size))
                    tk_img = ImageTk.PhotoImage(img)
                    self.thumb_refs.append(tk_img)
                    img_label.config(image=tk_img)
                except Exception as e:
                    img_label.config(text="图片加载失败")
            else:
                img_label.config(text=file.suffix.upper()+"文件")
            img_label.pack()
 
            # 原文件名显示
            orig_name = ttk.Label(frame, text=file.stem, wraplength=item_width-20, font=('微软雅黑',8))
            orig_name.pack(pady=2)
 
            # 智能输入框
            input_var = tk.StringVar(value=file.stem)
            entry = ttk.Entry(frame, textvariable=input_var, width=14, font=('微软雅黑',9))
             
            # 绑定自动选择事件
            entry.bind("<FocusIn>", lambda e: e.widget.select_range(0, tk.END))
            entry.pack()
             
            self.input_vars.append((file, input_var))
 
        # 更新布局
        self.scroll_frame.update_idletasks()
        self.canvas.config(scrollregion=self.canvas.bbox("all"))
 
    def safe_rename(self):
        name_map = {}
        for file, var in self.input_vars:
            new_stem = var.get().strip()
            if not new_stem or new_stem == file.stem: continue
             
            # 生成安全文件名
            base_name = new_stem
            suffix = file.suffix
            counter = 1
             
            while True:
                test_name = f"{base_name}{suffix}" if counter == 1 else f"{base_name}_{counter-1}{suffix}"
                if not file.with_name(test_name).exists():
                    break
                counter += 1
                 
            try:
                file.rename(file.with_name(test_name))
                name_map[file.name] = test_name
            except Exception as e:
                tk.messagebox.showerror("错误", f"重命名失败: {str(e)}")
                return
         
        # 更新显示
        if name_map:
            self.load_dir()
            tk.messagebox.showinfo("完成", f"成功重命名 {len(name_map)} 个文件")
 
if __name__ == "__main__":
    root = tk.Tk()
    root.style = ttk.Style()
    root.style.configure("TEntry", padding=3)
    app = UltraRenamer(root)
    root.mainloop()

免费评分

参与人数 4吾爱币 +8 热心值 +4 收起 理由
Alisell + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
99yuebo + 1 用心讨论,共获提升!
wyff123 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| manglang 发表于 2025-3-15 12:32 |楼主
补充说明:
今日迷上了米芾的书法,下载了不少帖子,想把他的字从字帖上截图保存起来,最后存了600多个图片文件。由于保存的时候用的是当时的时间作为文件名,不便于检索,所以就想快速批量修改文件名,把文件名改成图片上的文字。用一般的改名办法太啰嗦,用专门的改名软件实现不了,就启发诱导ds编写了这个程序。
程序运行时会显示特定文件夹中的所有图像及其文件名,点击文件名,输入文字,自动替换原名,最后确认,就能一次性全部改名了。
推荐
Jack068904 发表于 2025-5-21 14:33
遇到问题想办法解决,是个好习惯。
但是啊,咱就说,你目前的需求,能不能用其他方式解决呢?有点买个精密机床一顿加工出来个瓶起子的意思
我说一个思路你看看啊:
1.打开这个图片所在的文件夹,在查看选项卡里选小图标或者中等图标
2.从第一个照片开始,按F2,改名,然后...
3.按Tab键,直接跳到下一个文件改名。
3#
kylez1 发表于 2025-3-15 12:35
拿DS写这些小脚本小软件是真的好用,我前天刚写完一个自动下载B站指定UP的专栏内容的小脚本,五分钟就搞定了
4#
HH527522 发表于 2025-3-15 12:54
围观学习
5#
i72600k 发表于 2025-3-15 12:58
围观学习
6#
ifeng8 发表于 2025-3-15 13:02
学习了,谢谢分享,AI辅助编程效率确实高
7#
whijk5566 发表于 2025-3-15 13:30
谢谢分享
8#
sunshan 发表于 2025-3-15 13:31
看起来不错,可以试试看
9#
HALFartist 发表于 2025-3-15 13:41
感谢分享
10#
Robinbnbnbm 发表于 2025-3-15 13:56
牛&#128394;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-25 12:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表