做一个文档整理程序
想做一个文档整理程序1,tkinter做界面,启动程序,进入gui界面
2.在界面第一行显示 标签label,“请选择需要整理的文件类型”
3.在界面第二行,单选框1,后面标签为“.pdf",单选框2,后面标签为”.xlsx"
4.在界面第三行,按钮button,文字为“请选择需要提取数据的文件夹,可选多个”
点击后,可以一直选择文件夹,指导确认结束为止
5.选中的文件夹都在下面的行显示,标明选中了哪些文件夹
6.在界面第十行,按钮button,文字为“请选择提取数据归并的文件夹”,
点击侯,把选中的文件夹在下面的行显示
7.最下面按钮button,文件为“运行”,根据选定的文件类型的后缀,去指明需要提取数据的文件夹里找到所有符合的文件,
并到归并文件夹中新建一个文件夹如“pdf”,放置所有文件,并做一个excel,每一行列一个文件全名,在第二列做文件的超链接。 好的,你的需求可以用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 小助理,如未能正确解答您的问题,请继续追问。 Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1967, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "D:\PYTHON_NEW\pack20240926\pythonProject1\文档整理程序.py", line 34, in run_process
shutil.copy(full_path, target_folder_path)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\shutil.py", line 435, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\shutil.py", line 262, in copyfile
with open(dst, 'wb') as fdst:
^^^^^^^^^^^^^^^
PermissionError: Permission denied: 'E:/333\\pdf\\HG/T 20538-2016 衬塑钢管和管件选用系列.pdf'
报错了 颂风侯 发表于 2024-10-15 13:28
Exception in Tkinter callback
Traceback (most rec ...
这个错误提示说明你的程序在尝试复制文件到目标文件夹时,遇到了权限问题。通常有几个原因可能导致这个错误,以及相应的解决方案:
1. **目标文件夹没有写入权限**:确保你有权限向目标文件夹(例如"E:/333/pdf")写入。右键点击该文件夹,选择“属性”,然后查看“安全”选项卡中的权限设置。
2. **文件是只读的**:确认文件本身没有设置为只读。右键单击文件,选择“属性”,检查是否勾选了“只读”属性。
3. **目标文件已存在且不可覆盖**:脚本可能试图覆盖一个现有文件且没有权限。你可以选择在复制前删除目标位置的同名文件,或者改变程序逻辑防止覆盖。
4. **路径中使用的是反斜杠和正斜杠混用**:虽然Python一般能处理,但确保路径分隔符一致有利于避免潜在的问题。
为了解决此问题,你可以尝试以下修改:
- 确保目标文件夹路径是绝对路径,并确保它是适合创建新文件的地方。
- 运行程序时,在命令提示符或者终端中以管理员身份运行。(Windows下右键命令提示符,选择“以管理员身份运行”)
- 查看和修改文件夹和文件的权限,确保你有写权限。
- 修改代码中的路径拼接,使用`os.path.join`来确保路径是正确格式。
例如,改变路径拼接方式:
target_folder_path = os.path.join(target_folder, file_type.lower())
仔细检查以上步骤,看看能否解决你的问题。如需要进一步帮助,请确保详细描述你的设置和代码片段。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]