吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4661|回复: 107

[原创] 批量修改文件名2.0 python写的

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

本帖最后由 不负韶华 于 2020-6-19 17:00 编辑

继前几天写了批量修改文件名小工具的第一版,这几天紧追慢赶写bug
python tkintergui框架写的,所以并不美观
代码加入了注释
先说说升级的地方吧:
1.增加了多个文件选择的功能,并不需要一定选择文件夹,
2.增加了保留源文件名功能,可以在源文件名基础上加数字字母,
3.将多个按钮合并为一个确定按。改了很多bug,
3.增加了标准数字功能即可以使用001,002,003,004
来进行命名,关于软件的正则还是很鸡肋,感觉无从下手,下一个版本考虑增加撤回功能,改进正则
代码开源欢迎大家一起完善,可能还有很多bug
蓝揍云:https://devilwst.lanzouw.com/b00noj9ta    密码:6s6j
由于有长度限制,只能放1/3的代码,部分代码放到下面(相对于1.0版,代码量翻了两倍
from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import askdirectory
import os
import tkinter as tk
from tkinter import ttk
import re
from tkinter import filedialog


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.f3 = Frame(self)
        self.f3.pack(side="right")
        self.f2 = Frame(self)
        self.f2.pack()
        self.fintenger = Frame(self.f2)
        self.fintenger.grid(row=5, column=0, columnspan=2)
        self.finside = Frame(self.f2)
        self.finside.grid(row=2, column=0)
        self.f4 = Frame(self.f2)
        self.f4.grid(row=7, column=0)
        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)
        butn2 = ttk.Button(self.f2, text="选择多个文件", command=self.choose_files)
        butn2.grid(row=2, column=1)
        self.b = StringVar()
        self.b.set("0")
        self.b1 = ttk.Radiobutton(self.finside, text="文件夹", value="0", variable=self.b)
        self.b2 = ttk.Radiobutton(self.finside, text="文件", value="1", variable=self.b)
        self.b1.grid(row=2, column=0)
        self.b2.grid(row=2, column=1)
        # butn3 = ttk.Button(self.finside, text="ensure", command=self.check_file_type)
        # butn3.grid(row=2,column=2)
        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=3, column=0, sticky=NSEW, pady=20)
        self.btn = ttk.Button(self.f2, text="更改文件名", command=self.inform)
        self.btn.grid(row=3, 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=4, column=0)
        self.v2.grid(row=4, column=1)
        # self.checkbutn()
        self.l3 = Text(self.f3, width=50, height=26, 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(padx=25, pady=0)
        self.ra = StringVar()
        self.ra.set("0")
        self.ra3 = ttk.Radiobutton(self.fintenger, text="标准数字", value="2", variable=self.ra)
        self.ra1 = ttk.Radiobutton(self.fintenger, text="数字排前", value="0", variable=self.ra)
        self.ra2 = ttk.Radiobutton(self.fintenger, text="数字排后", value="1", variable=self.ra)
        self.ra3.pack(side="left")
        self.ra1.pack(side="left")
        self.ra2.pack(side="left")
        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=6, column=0)
        self.r2.grid(row=6, 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)
        self.e = StringVar()
        self.e.set("1")
        self.e1 = ttk.Radiobutton(self.f4, text="保留文件名", value="0", variable=self.e)
        self.e2 = ttk.Radiobutton(self.f4, text="取消", value="1", variable=self.e)
        self.e1.pack(side="left")
        self.e2.pack(side="left")
        # butn4 = ttk.Button(self.f4, text="确定保留", command=self.reserve_old_filename)
        # butn4.pack(side="left")
        butn_help = ttk.Button(self.f2, text="help", command=self.help)
        butn_help.grid(row=7, column=1)
        butn = ttk.Button(self.f2, text="确定", command=self.justyfilename)
        butn.grid(row=8, column=1, sticky=EW)

    def reserve_old_filename(self):
        """保留源原文件名并加现在想要的格式"""
reserve_information = self.e.get()
        if reserve_information == "0":
            part_name = self.entry01.get()
            self.l3.insert(INSERT, part_name)
            f_name = self.ra.get()
            """数字排前拍后"""
            """使用正则不使用正则"""
            try:
                list_dir = os.listdir(self.path)
                self.l3.insert(INSERT, "前缀名\n")
                i = 0
                for listna in list_dir:
                    list_name = self.path + listna
                    b_name = listna.split(".")[-1
                    origion_name = listna.split(".")[0
                    if f_name == "0":
                        """数字排前"""
                        i += 1
                        line_name = i
                        """计数"""
                        full_name = self.path + str(line_name) + str(origion_name) + "." + b_name
                        os.rename(list_name, full_name)
                        self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                    elif f_name == "1":
                        """数字排后"""
                        i += 1
                        line_name = i
                        full_name = self.path + str(origion_name) + str(line_name) + "." + b_name
                        os.rename(list_name, full_name)
                        self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                    elif f_name == "2":
                        # print("*" * 60)
                        i += 1
                        line_name = i
                        if i < 10:
                            full_name = self.path + "00" + str(line_name) + str(origion_name) + "." + b_name
                            os.rename(list_name, full_name)
                            self.l3.insert(INSERT, "文件%s重命名成功,新的文件名为%s\n" % (list_name, full_name))
                        elif 100 > i >= 10:
                            full_name = se
    def no_reserve_old_filenames(self):
        messagebox.showinfo(title="<justyfilename函数报错>", message="justyfilename 选择文件夹不保留源文件名函数报错,264行之后代码,")
if __name__ == '__main__':
    """程序主窗体"""
    root = Tk()
    root.geometry("730x340+200+200")
    root.title("批量更改文件名v2.0")
    root.iconbitmap("b.ico")
    root.resizable(width=False, height=False)
    app = GUI(master=root)
    root.wm_attributes("-alpha", 0.8)  # 透明度(0.0~1.0)
    root.wm_attributes("-toolwindow", True)  # 置为工具窗口(没有最大最小按钮)
    root.wm_attributes("-topmost", True)  # 永远处于顶层
    # root.overrideredirect(True)
    root.mainloop()

WD0}S%TDQ@9ZD61`R84Z521.png
9AJSED1UVRA7%@XQGFBY{SU.png

评分

参与人数 16HB +12 THX +6 收起 理由
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
xiaoxixpj + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
创客者V2.0 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
天使替我爱你 + 1
DeeDarrick + 1
thunderiser + 1
temp + 1
别管我了行 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
逆君 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
playboy + 1
消逝的过去 + 2
h112233h456 + 1
leo999 + 1
brswbx201610 + 1
本子狸 + 1

查看全部评分

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

蓝“揍”云
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
win12345 发表于 2020-6-30 13:19 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
williamupup 发表于 2020-7-7 08:58 | 显示全部楼层

谢谢大佬分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
1039068499 发表于 2020-7-26 02:17 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
纳兰龙珠 发表于 2020-8-27 22:00 | 显示全部楼层

"由于有长度限制,只能放1/3的代码,部分代码放到下面"
云盘里的代码是完整的吗?
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
muker 发表于 2021-11-8 05:33 | 显示全部楼层

可以大大提高生产效率的工具,支持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
LuckyClover 发表于 2021-11-16 09:08 | 显示全部楼层

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

好东西  感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!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

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