📜  使用 Tkinter 重命名图像文件夹

📅  最后修改于: 2022-05-13 01:55:04.184000             🧑  作者: Mango

使用 Tkinter 重命名图像文件夹

先决条件: Python GUI – tkinter、os.listdir() 方法、os.rename() 方法

在本文中,任务是使用Python重命名一批图像。现在说在具有随机名称的文件夹中给定n 个图像。例如,考虑下面的图像。

现在的要求是以有序的方式重命名它们,并附加它们各自图像的原始尺寸,如 image-0-362×326、image-1-351×414 等。手动执行此操作将是一项乏味的任务,但可以使用 os 模块中的 rename() 和 listdir() 方法来实现此目标。

重命名()方法

在Python 3 中, rename()方法用于重命名文件或目录。此方法是 os 模块的一部分,非常方便。

listdir() 方法

listdir方法列出给定目录的所有内容。

下面的代码将为我们完成这项工作。使用 Tkinter 模块,它将询问存储所有图像的文件夹路径。它遍历 xyz 文件夹中所有图像的列表,定义目标 (dst) 和源 (src) 地址,并使用 rename() 方法重命名。

下面是实现。

Python3
# Python 3 code to rename multiple image
# files in a directory or folder
 
 
import os 
from tkinter import messagebox
import cv2
from tkinter import filedialog
from tkinter import *
 
 
height1 = 0
width1 = 0
 
# Function to select folder to rename images
def get_folder_path():
     
    root = Tk()
    root.withdraw()
    folder_selected = filedialog.askdirectory()
     
    return folder_selected
 
 
# Function to rename multiple files
def submit():
     
    source = src_dir.get()
    src_dir.set("")
    global width1
    global height1
     
    input_folder = get_folder_path()
    i = 0
     
    for img_file in os.listdir(input_folder):
 
        file_name = os.path.splitext(img_file)[0]
        extension = os.path.splitext(img_file)[1]
 
        if extension == '.jpg':
            src = os.path.join(input_folder, img_file)
            img = cv2.imread(src)
            h, w, c = img.shape
            dst = source + '-' + str(i) + '-' + str(w) + "x" + str(h) + ".jpg"
            dst = os.path.join(input_folder, dst)
 
            # rename() function will rename all the files
            os.rename(src, dst)
            i += 1
             
    messagebox.showinfo("Done", "All files renamed successfully !!")
 
 
 
# Driver Code
if __name__ == '__main__':
    top = Tk()
    top.geometry("450x300")
    top.title("Image Files Renamer")
    top.configure(background ="Dark grey")
 
    # For Input Label
    input_path = Label(top,
                       text ="Enter Name to Rename files:",
                       bg ="Dark grey").place(x = 40, y = 60)
     
    # For Input Textbox
    src_dir = StringVar()
    input_path_entry_area = Entry(top,
                                  textvariable = src_dir,
                                  width = 50).place(x = 40, y = 100)
 
     # For submit button
    submit_button = Button(top,
                           text ="Submit",
                           command = submit).place(x = 200, y = 150)
 
    top.mainloop()


输出 :