文件名批量添加前缀/后缀(python)

直接上代码

from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
from tkinter import ttk
import os


root = Tk()
root.title('mingo tool')
sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
#设置窗口高宽,并居中
Width = 700
Hight = 600
cen_x = (sw - Width) / 2
cen_y = (sh - Hight) / 2
root.geometry('%dx%d+%d+%d' % (Width, Hight, cen_x, cen_y))
root.iconphoto(False, PhotoImage(file="mingo.png"))

lab1=Label(root,text='标识')
lab2=Label(root,text='前缀/后缀')
ent1=Entry(root)
fixType = IntVar()
folderPath=StringVar()
messageInfo=StringVar()

def addFix():
    if checkParam():
        os.chdir(folderPath.get())
        fixKey = ent1.get()
        count=0
        for x in os.listdir('.'):
            if os.path.isfile(x):
                fileName=os.path.splitext(x)[0]
                fileFix=os.path.splitext(x)[1]
                if fixType.get()==1:
                    fileName=fixKey+fileName
                else:
                    fileName+=fixKey
                os.rename(x, fileName+fileFix)
                count+=1
        reloadFileList()
        messagebox.showinfo(title="添加成功",message="处理完成,已为文件夹:" + folderPath.get() + ",下 " + str(count) + " 个文件添加了标识。")

def deleteFix():
    if checkParam():
        os.chdir(folderPath.get())
        fixKey = ent1.get()
        fixLength = len(fixKey)
        count=0
        for x in os.listdir('.'):
            if os.path.isfile(x):
                fileName=os.path.splitext(x)[0]
                fileFix=os.path.splitext(x)[1]
                if fixType.get()==1:
                    if fileName[:fixLength]==fixKey:
                        os.rename(x, fileName[fixLength:]+fileFix)
                        count+=1
                else:
                    if fileName[-fixLength:]==fixKey:
                        os.rename(x, fileName[:-fixLength]+fileFix)
                        count+=1
        reloadFileList()
        messagebox.showinfo(title="删除成功",message="处理完成,已删除了文件夹:" + folderPath.get() + ",下 " + str(count) + " 个文件的标识。")

def checkParam():
    if ent1.get()=="":
        messagebox.showerror(title="错误",message="没有填写标识!")
        return False
    elif fixType.get() != 1 and fixType.get() != 2:
        messagebox.showerror(title="错误",message="没有选择前缀/后缀!")
        return False
    elif folderPath.get() == "":
        messagebox.showerror(title="错误",message="没有选择文件夹!")
        return False
    return True

def showMessage(text,isError):
    color="red" if isError else "green"
    messageInfo.set(text)
    message.configure(foreground=color)
    message.grid(row=4,column=0,columnspan=4,padx=10,pady=10)
                        

def slectFolder():
    selectPath = filedialog.askdirectory()
    folderPath.set(selectPath)
    folderMessage.grid(row=0,column=1,columnspan=4,padx=10,pady=10,sticky=W)
    reloadFileList()

def reloadFileList():
    for child in tree.get_children():
	    tree.delete(child)
    os.chdir(folderPath.get())
    for x in os.listdir('.'):
        if os.path.isfile(x):
            tree.insert("", "end", values=(x))

#创建元素
radio1 = Radiobutton(root, text="前缀", variable=fixType, value=1)
radio2 = Radiobutton(root, text="后缀", variable=fixType, value=2)
btn1=Button(root,text='选择文件夹',command=slectFolder)
btn2=Button(root,text='删除',command=deleteFix,bg='red')
btn3=Button(root,text='添加',command=addFix,bg='green')
folderMessage=Message(root, textvariable=folderPath,width=600)

#布局
btn1.grid(row=0,column=0,padx=10,pady=10)
lab1.grid(row=1,column=0,padx=10,pady=10)
ent1.grid(row=1,column=1,padx=10,pady=10)
lab2.grid(row=2,column=0,padx=10,pady=10)
radio1.grid(row=2,column=1,padx=10,pady=10)
radio2.grid(row=2,column=2,padx=10,pady=10)
btn2.grid(row=3,column=0, columnspan=2,padx=10,pady=10)
btn3.grid(row=3,column=1, columnspan=2,padx=10,pady=10)
message=Message(root, textvariable=messageInfo,width=500)

tree = ttk.Treeview(root, columns=("column"), show="headings",height=15)
tree.heading("column", text="文件列表")
tree.column("column", width=600)
scroll = ttk.Scrollbar(root,orient=VERTICAL,command=tree.yview)
tree.configure(yscrollcommand=scroll.set)
tree.grid(row=5,column=0, columnspan=4,padx=(20,0),pady=10,sticky=NSEW)
scroll.grid(row=5,column=4,sticky=NS)

root.mainloop()



打包成可执行程序

我用的 cx_Freeze 打包,当然还有其它打包工具,这个打包的文件比较小。打包过后可直接点击 exe 文件直接执行程序了,不需要安装 python。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值