吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3451|回复: 98

[原创] 批量修改文件名

  [复制链接]
不负韶华 发表于 2020-6-16 11:38 | 显示全部楼层 |阅读模式

python tkinter
写了一个批量修改文件名的小程序,
程序开源
欢迎大家一起开发,一起完善


程序,懒昼网盘https://devilwst.lanzouw.com/ijHGMdpkosf

代码我放到下面   
from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import askdirectory
import os
import time
from tkinter import ttk
import re

class GUI(Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.creat_window()
        self.path = "d:/"

    def creat_window(self):
        self.f1 = Frame(self)
        self.f1.pack()
        self.f2 = Frame(self)
        self.f2.pack()
        self.f3 = Frame(self)
        self.f3.pack()
        self.f4 = Frame(self)
        self.f4.pack()
        l1 = Label(self.f1, text="批量更改文件名", bg="pink", fg="white", fon=("宋体", 20))
        l1.grid(row=0, column=0, rowspan=2, columnspan=2, sticky=NSEW)
        self.l2 = ttk.Entry(self.f2)
        self.l2.insert(0, "文件夹路径")
        self.l2.grid(row=1, column=0, stick=EW, pady=20)
        co = ttk.Button(self.f2, text="选择文件夹", command=self.coll)
        co.grid(row=1, column=1, sticky=EW)
        self.entry01 = ttk.Entry(self.f2)
        # self.entry01.insert(0, "更改后文件名")
        self.entry01.grid(row=2, column=0, sticky=NSEW, pady=20)
        self.btn = ttk.Button(self.f2, text="更改文件名", command=self.inform)
        self.btn.grid(row=2, column=1, sticky=EW)
        self.v = StringVar()
        self.v.set("0")
        self.v1 = ttk.Radiobutton(self.f2, text="前缀名", value="0", variable=self.v)
        self.v2 = ttk.Radiobutton(self.f2, text="后缀名", value="1", variable=self.v)
        self.v1.grid(row=3, column=0)
        self.v2.grid(row=3, column=1)
        self.checkbutn()
        self.l3 = Text(self.f3, width=36, height=16, bg="lightblue", yscrollcommand=True)
        self.l3.insert(INSERT, "终端\n")
        scroll = ttk.Scrollbar(self.f3, orient=VERTICAL, takefocus=0.1)
        scroll.place(relwidth=0.04, relheight=1, relx=0.9575, rely=0)
        scroll.config(command=self.l3.yview)
        self.l3.config(yscrollcommand=scroll.set)
        self.l3.pack()
        self.ra = StringVar()
        self.ra.set("0")
        self.ra1 = ttk.Radiobutton(self.f2, text="数字排前", value="0", variable=self.ra)
        self.ra2 = ttk.Radiobutton(self.f2, text="数字排后", value="1", variable=self.ra)
        self.ra1.grid(row=4, column=0)
        self.ra2.grid(row=4, column=1)
        self.r = StringVar()
        self.r.set("1")
        self.r1 = ttk.Radiobutton(self.f2, text="使用正则", value="0", variable=self.r)
        self.r2 = ttk.Radiobutton(self.f2, text="不使用正则", value="1", variable=self.r)
        self.r1.grid(row=5, column=0)
        self.r2.grid(row=5, column=1)
        signname1 = 47136
        signname2 = signname1-17153
        sign_p1 = chr(int(signname1/2-1))
        sign_p2 = str(chr((signname2)))
        signname = sign_p1 + sign_p2
        ls = Label(self, text=signname, fon=("黑体", 10), fg="blue")
        ls.pack(side="right", padx=1, pady=5)


    def checkbutn(self):
        butn = ttk.Button(self.f2, text="确定", command=self.justyfilename)
        butn.grid(row=6, column=1, sticky=EW)

    def justyfilename(self):
        part_name = self.entry01.get()
        self.l3.insert(INSERT, part_name)
        f_name = self.ra.get()
        re_name = self.r.get()
        lis = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
               "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
               "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"

        try:
            list_dir = os.listdir(self.path)
            if self.v.get() == "1":
                for listna in list_dir:
                    list_name = self.path + listna
                    b_name = listna.split(".")[0
                    # print(b_name)
                    full_name = self.path + b_name + "." + str(part_name)
                    # print(full_name)
                    os.rename(list_name, full_name)
                    self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
            else:
                self.l3.insert(INSERT, "前缀名\n")
                length = len(list_dir)
                i = 0
                for listna in list_dir:
                    list_name = self.path + listna
                    b_name = listna.split(".")[1
                    # print(b_name)
                    if re_name == "0":
                        re_part_name = re.findall('.*\[(.*)\].*', part_name)[0
                        part_name1 = part_name.split("[")[0
                        part_name3 = part_name.split("]")[-1
                        part_name2 = part_name.split("[")[1].replace("1-9]", "")
                        if "1-9" in re_part_name:
                            # print("jjjjjjjjh")
                            i += 1
                            full_name = self.path + part_name1 + str(i) + part_name2 + part_name3 + "." + b_name
                            os.rename(list_name, full_name)
                            self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                        elif "a-z" in re_part_name:
                            en_name = lis
                            i += 1
                            part_name2 = part_name.split("[")[1].replace("a-z]", "")
                            full_name = self.path + part_name1 + str(en_name) + part_name3 + "." + b_name
                            os.rename(list_name, full_name)
                            self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                    elif re_name == "1":
                        if f_name == "0":
                            i += 1
                            line_name = i
                            full_name = self.path + str(line_name) + str(part_name) + "." + b_name
                            os.rename(list_name, full_name)
                            self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                        else:
                            i += 1
                            line_name = i
                            full_name = self.path + str(part_name) + str(line_name) + "." + b_name
                            os.rename(list_name, full_name)
                            self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
        except Exception:
            self.message()


    def inform(self):
        messagebox.showinfo(title="<注意>", message="直接输入文件名,无需加点")

    def message(self):
        messagebox.showinfo(title="<注意>", message="请输入文件夹路径,并按顺序完成,或出现了某种未知错误")

    def coll(self):
        self.path = askdirectory(title="选择文件", initialdir="d:/")
        self.path = self.path+"/"
        # print(self.path)        #要增加判断文件夹还是多个文件
        # 判断前缀,加字母数字下划区分
        self.l3.insert(INSERT, self.path)
        self.l2.insert(0, self.path)


if __name__ == '__main__':
    root = Tk()
    root.geometry("280x490+200+200")
    root.title("批量更改文件名")
    root.iconbitmap("b.ico")
    root.resizable(width=False, height=False)
    app = GUI(master=root)
    root.mainloop()

85%6}6U4IUEH8Q7@69YU{PG.png

评分

参与人数 18HB +16 THX +8 收起 理由
白子希 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
天使替我爱你 + 1
DeeDarrick + 1
陈沦 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
thunderiser + 1
别管我了行 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
国宝熊猫 + 2 + 1
playboy + 1
消逝的过去 + 2
h112233h456 + 1
leo999 + 1
Shin + 1
Yoling100 + 1 以前私服有这类小工具
豆0o0豆 + 1 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
奔跑的团子 + 1 + 1 [快捷评语]--你将受到所有人的崇拜!
xing7681 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
白嫖怪 发表于 2020-6-17 14:45 | 显示全部楼层

好难啊 PY 改个文件名字都这么难········我还在门口观望
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 不负韶华 发表于 2020-6-17 17:03 | 显示全部楼层

白嫖怪 发表于 2020-6-17 14:45
好难啊 PY 改个文件名字都这么难········我还在门口观望

不是的,光改文件名只需要一句代码,gui还加了许多功能
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
白嫖怪 发表于 2020-6-18 12:43 | 显示全部楼层

不负韶华 发表于 2020-6-17 17:03
不是的,光改文件名只需要一句代码,gui还加了许多功能

PY 好难学啊,我学了几节课 受不了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
深海 发表于 2020-6-18 14:38 | 显示全部楼层

看的头皮发麻
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 不负韶华 发表于 2020-6-18 15:17 | 显示全部楼层

白嫖怪 发表于 2020-6-18 12:43
PY 好难学啊,我学了几节课 受不了

py还是挺简单的,比、java  c简单多了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
leostarlx 发表于 2020-7-29 09:38 | 显示全部楼层

这个不错,也有多个条件筛选,经常用得上
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xueli 发表于 2020-8-8 12:12 | 显示全部楼层

感谢分享,用得上
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
LuckyClover 发表于 2021-11-16 08:28 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
豆0o0豆 发表于 2021-11-21 11:08 | 显示全部楼层

感谢分享感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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