• 注册
  • 教程 教程 关注:78 内容:6899

    批量修改文件名小程序,开源,欢迎一起完善更多功能

  • 查看作者
  • 打赏作者
  • 当前位置: 三石论坛GM站 > 教程 > 正文
    • 1
    • 教程
    • Lv.16

      批量修改文件名小程序,开源,欢迎一起完善更多功能

      python tkinter

      写了一个批量修改文件名的小程序,

      程序开源

      代码我放到下面    

      (小生不才,写的不好)



      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__(selfmaster=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.f1text=批量更改文件名bg=“pink”fg=“white”fon=(宋体20))

              l1.grid(row=0column=0rowspan=2columnspan=2sticky=NSEW)

              self.l2 = ttk.Entry(self.f2)

              self.l2.insert(0文件夹路径)

              self.l2.grid(row=1column=0stick=EWpady=20)

              co = ttk.Button(self.f2text=选择文件夹command=self.coll)

              co.grid(row=1column=1sticky=EW)

              self.entry01 = ttk.Entry(self.f2)

              # self.entry01.insert(0, “更改后文件名“)
              self.entry01.grid(row=2column=0sticky=NSEWpady=20)

              self.btn = ttk.Button(self.f2text=更改文件名command=self.inform)

              self.btn.grid(row=2column=1sticky=EW)

              self.v = StringVar()

              self.v.set(“0”)

              self.v1 = ttk.Radiobutton(self.f2text=前缀名value=“0”variable=self.v)

              self.v2 = ttk.Radiobutton(self.f2text=后缀名value=“1”variable=self.v)

              self.v1.grid(row=3column=0)

              self.v2.grid(row=3column=1)

              self.checkbutn()

              self.l3 = Text(self.f3width=36height=16bg=“lightblue”yscrollcommand=True)

              self.l3.insert(INSERT终端\n)

              scroll = ttk.Scrollbar(self.f3orient=VERTICALtakefocus=0.1)

              scroll.place(relwidth=0.04relheight=1relx=0.9575rely=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.f2text=数字排前value=“0”variable=self.ra)

              self.ra2 = ttk.Radiobutton(self.f2text=数字排后value=“1”variable=self.ra)

              self.ra1.grid(row=4column=0)

              self.ra2.grid(row=4column=1)

              self.r = StringVar()

              self.r.set(“1”)

              self.r1 = ttk.Radiobutton(self.f2text=使用正则value=“0”variable=self.r)

              self.r2 = ttk.Radiobutton(self.f2text=不使用正则value=“1”variable=self.r)

              self.r1.grid(row=5column=0)

              self.r2.grid(row=5column=1)

              signname1 = 47136
              signname2 = signname1-17153
              sign_p1 = chr(int(signname1/21))

              sign_p2 = str(chr((signname2)))

              signname = sign_p1 + sign_p2

              ls = Label(selftext=signnamefon=(黑体10)fg=“blue”)

              ls.pack(side=“right”padx=1pady=5)





          def checkbutn(self):

              butn = ttk.Button(self.f2text=确定command=self.justyfilename)

              butn.grid(row=6column=1sticky=EW)



          def justyfilename(self):

              part_name = self.entry01.get()

              self.l3.insert(INSERTpart_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_namefull_name)

                          self.l3.insert(INSERT文件%s重命名成功,新的文件名为%s\n” % (list_namefull_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_namefull_name)

                                  self.l3.insert(INSERT文件%s重命名成功,新的文件名为%s\n” % (list_namefull_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_namefull_name)
                                  self.l3.insert(INSERT文件%s重命名成功,新的文件名为%s\n” % (list_namefull_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_namefull_name)
                                  self.l3.insert(INSERT文件%s重命名成功,新的文件名为%s\n” % (list_namefull_name))
                              else:
                                  i += 1
                                  line_name = i
                                  full_name = self.path + str(part_name) + str(line_name) + “.” + b_name
                                  os.rename(list_namefull_name)
                                  self.l3.insert(INSERT文件%s重命名成功,新的文件名为%s\n” % (list_namefull_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(INSERTself.path)
              self.l2.insert(0self.path)

      if __name__ == ‘__main__’:
          root = Tk()
          root.geometry(“280×490+200+200”)
          root.title(批量更改文件名)
          root.iconbitmap(“b.ico”)
          root.resizable(width=False, height=False)
          app = GUI(master=root)
          root.mainloop()



      批量修改文件名小程序,开源,欢迎一起完善更多功能

      下载地址 

      Lv.15
      无敌了
      回复

      请登录之后再进行评论

      登录
    • 发动态
    • 发音乐
    • 发视频
    • 发帖子
      • 大版主
      • 小版主
    • 三石
    • 暂没有数据

    • 任务
    • 小程序码    公众号 小程序&公众号
    • 帖子间隔 侧栏位置: