|
发表于 2024-10-15 13:14:45
|
显示全部楼层
好的,你的需求可以用Python和tkinter库以及一些文件操作库(如os和shutil)来实现。我为你提供一个简化示例代码,帮助你做一个文档整理程序。这个示例实现了基本的界面和文件操作功能。
- import os
- import shutil
- import tkinter as tk
- from tkinter import filedialog, messagebox
- def select_folders():
- selected_dirs = filedialog.askdirectory(mustexist=True)
- if selected_dirs:
- folder_list.extend(selected_dirs)
- folders_display.set('\n'.join(folder_list))
- def select_merge_folder():
- merge_dir = filedialog.askdirectory(mustexist=True)
- if merge_dir:
- merge_folder_display.set(merge_dir)
- def run_process():
- file_type = selected_file_type.get()
- if not folder_list or not merge_folder_display.get():
- messagebox.showwarning("警告", "请选择有效的文件夹")
- return
- target_folder_name = "pdf" if file_type == ".pdf" else "xlsx"
- target_folder_path = os.path.join(merge_folder_display.get(), target_folder_name)
- os.makedirs(target_folder_path, exist_ok=True)
- file_list = []
- for folder in folder_list:
- for root, _, files in os.walk(folder):
- for file in files:
- if file.endswith(file_type):
- full_path = os.path.join(root, file)
- shutil.copy(full_path, target_folder_path)
- file_list.append((file, os.path.abspath(full_path)))
- excel_filepath = os.path.join(merge_folder_display.get(), f"files_list_{target_folder_name}.xlsx")
-
- try:
- import openpyxl
- workbook = openpyxl.Workbook()
- sheet = workbook.active
- for row_num, (file_name, file_path) in enumerate(file_list, start=1):
- sheet.cell(row=row_num, column=1, value=file_name)
- sheet.cell(row=row_num, column=2).hyperlink = file_path
- sheet.cell(row=row_num, column=2, value="打开")
- workbook.save(excel_filepath)
- messagebox.showinfo("完成", f"文件已整理到 {target_folder_path},Excel 表已生成")
- except ImportError:
- messagebox.showerror("错误", "需要安装 openpyxl 模块")
- app = tk.Tk()
- app.title("文档整理程序")
- selected_file_type = tk.StringVar(value=".pdf")
- tk.Label(app, text="请选择需要整理的文件类型").grid(row=0, column=0, columnspan=2)
- tk.Radiobutton(app, text=".pdf", variable=selected_file_type, value=".pdf").grid(row=1, column=0)
- tk.Radiobutton(app, text=".xlsx", variable=selected_file_type, value=".xlsx").grid(row=1, column=1)
- folder_list = []
- folders_display = tk.StringVar()
- tk.Button(app, text="请选择需要提取数据的文件夹,可选多个", command=select_folders).grid(row=2, column=0, columnspan=2)
- tk.Label(app, textvariable=folders_display, anchor="w", justify="left").grid(row=3, column=0, columnspan=2)
- merge_folder_display = tk.StringVar()
- tk.Button(app, text="请选择提取数据归并的文件夹", command=select_merge_folder).grid(row=9, column=0, columnspan=2)
- tk.Label(app, textvariable=merge_folder_display, anchor="w", justify="left").grid(row=10, column=0, columnspan=2)
- tk.Button(app, text="运行", command=run_process).grid(row=11, column=0, columnspan=2)
- app.mainloop()
复制代码
### 注意事项:
1. 此代码中需要安装 `openpyxl` 模块来处理 Excel 文件,可通过`pip install openpyxl`来安装。
2. 代码结构和功能进行了简化,具体逻辑可根据需要自行完善,比如错误处理、更多文件类型支持等。
3. 提供的示例代码只是基本功能演示,实际环境中使用时请注意完善界面和逻辑的细节。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|