7,使用 Python 3 和 tkinter 写一个批量修改文件名称的程序,两个文本框,两个按钮,点击第一个按钮导入文件路径,并把该文件夹下所有的文件全路径用表格的形式显示到第二个文本框中,并可以直接在文本框中修改文件名称,修改完成后,点击第二个按钮就可以把该文件夹下的文件名称修改了,每一页显示10个文件夹的路径,多余的存储大下一页,第二个文本框最下面显示页码,并可以翻页。
时间: 2023-09-29 18:05:15 浏览: 119
按照表格批量修改文件名字(包含子路径)
以下是一个简单的示例程序,实现了批量修改文件名称的功能。该程序使用 Python 3 和 tkinter 库。
```
import
import tkinter as tk
from tkinter import filedialog, messagebox
class BatchRenameWindow(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
.master.title("批量修改文件名称")
self.master.geometry("800x600")
self.create_widgets()
def create_widgets(self):
# 第一个文本框,用于显示文件路径
self.textbox1 = tk.Text(self.master, height=10)
self.textbox1.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
# 第二个文本框,用于显示文件列表
self.textbox2 = tk.Text(self.master, height=30)
self.textbox2.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
# 按钮区域
button_frame = tk.Frame(self.master)
button_frame.pack(fill=tk.X, padx=10, pady=10)
# 导入文件夹按钮
self.import_button = tk.Button(button_frame, text="导入文件夹", command=self.import_folder)
self.import_button.pack(side=tk.LEFT, padx=10, pady=10)
# 修改文件名按钮
self.rename_button = tk.Button(button_frame, text="修改文件名", command=self.rename_files)
self.rename_button.pack(side=tk.LEFT, padx=10, pady=10)
# 分页区域
page_frame = tk.Frame(self.master)
page_frame.pack(side=tk.BOTTOM, fill=tk.X, padx=10, pady=10)
self.cur_page = 1
self.total_page = 1
self.page_label = tk.Label(page_frame, text=f"第{self.cur_page}/{self.total_page}页")
self.page_label.pack(side=tk.RIGHT)
self.prev_button = tk.Button(page_frame, text="上一页", command=self.prev_page)
self.prev_button.pack(side=tk.RIGHT)
self.next_button = tk.Button(page_frame, text="下一页", command=self.next_page)
self.next_button.pack(side=tk.RIGHT)
def import_folder(self):
folder_path = filedialog.askdirectory()
if not folder_path:
return
self.textbox1.delete(1.0, tk.END)
self.textbox1.insert(tk.END, f"已选择文件夹:{folder_path}\n\n")
files = os.listdir(folder_path)
self.file_list = [os.path.join(folder_path, f) for f in files]
self.total_page = (len(self.file_list) + 9) // 10
self.show_files()
def show_files(self):
self.textbox2.delete(1.0, tk.END)
start = (self.cur_page - 1) * 10
end = min(start + 10, len(self.file_list))
for i in range(start, end):
self.textbox2.insert(tk.END, f"{self.file_list[i]}\n")
self.page_label.config(text=f"第{self.cur_page}/{self.total_page}页")
def rename_files(self):
new_file_list = []
for line in self.textbox2.get(1.0, tk.END).split("\n"):
line = line.strip()
if not line:
continue
new_file_list.append(line)
if len(new_file_list) != len(self.file_list):
messagebox.showerror("错误", "文件数量不一致,请检查!")
return
for old_file, new_file in zip(self.file_list, new_file_list):
os.rename(old_file, new_file)
messagebox.showinfo("提示", "文件名称修改成功!")
def prev_page(self):
if self.cur_page > 1:
self.cur_page -= 1
self.show_files()
def next_page(self):
if self.cur_page < self.total_page:
self.cur_page += 1
self.show_files()
if __name__ == "__main__":
root = tk.Tk()
app = BatchRenameWindow(root)
app.mainloop()
```
该程序中,使用了两个 `Text` 控件分别用于显示文件路径和文件列表。使用 `Button` 控件实现导入文件夹和修改文件名的功能。使用 `Label` 控件和两个 `Button` 控件实现分页功能。
在程序中,通过 `os.listdir` 函数获取文件夹下的所有文件,然后将文件全路径保存在 `self.file_list` 列表中。在修改文件名时,先将第二个文本框中的文件路径读取出来,然后将旧的文件名和新的文件名一一对应,使用 `os.rename` 函数修改文件名。
注意,为了防止文件数量过多导致程序卡顿,每次在第二个文本框中只显示 10 个文件,需要使用分页功能查看所有文件。
阅读全文