|

楼主 |
发表于 2024-10-7 13:05:32
|
显示全部楼层
- import os
- import shutil
- import tkinter as tk
- from tkinter import filedialog
- import pandas as pd
- class PDFCollectorApp:
- def __init__(self, root):
- self.root = root
- self.root.title("PDF Collector")
- self.pdf_paths = set()
- self.select_button = tk.Button(root, text='选择文件夹', command=self.select_folders)
- self.select_button.pack(pady=10)
- self.stop_button = tk.Button(root, text='停止选择', command=self.stop_selection)
- self.stop_button.pack(pady=10)
- self.save_button = tk.Button(root, text='指定存放文件夹', command=self.set_save_folder)
- self.save_button.pack(pady=10)
- self.selected_folders = []
- self.save_folder = None
- def select_folders(self):
- folder = filedialog.askdirectory(title="选择文件夹")
- if folder:
- self.selected_folders.append(folder)
- def stop_selection(self):
- self.scan_pdfs()
- k.messagebox.showinfo("提示", "选择已停止")
- def set_save_folder(self):
- self.save_folder = filedialog.askdirectory(title="选择用于存放文件夹")
- if self.save_folder:
- self.copy_pdfs()
- self.create_excel()
- def scan_pdfs(self):
- for folder in self.selected_folders:
- for root, dirs, files in os.walk(folder):
- for file in files:
- if file.endswith('.pdf'):
- self.pdf_paths.add(os.path.join(root, file))
- def copy_pdfs(self):
- pdf_folder = os.path.join(self.save_folder, "PDF")
- os.makedirs(pdf_folder, exist_ok=True)
- for pdf_path in self.pdf_paths:
- pdf_name = os.path.basename(pdf_path)
- dest_path = os.path.join(pdf_folder, pdf_name)
- if not os.path.exists(dest_path):
- shutil.copy(pdf_path, dest_path)
- def create_excel(self):
- pdf_folder = os.path.join(self.save_folder, "PDF")
- pdf_files = os.listdir(pdf_folder)
- data = {
- '名称': [os.path.splitext(pdf)[0] for pdf in pdf_files],
- '超链接': [f'=HYPERLINK("{os.path.join(pdf_folder, pdf)}", "{pdf}")' for pdf in pdf_folder]
- }
- df = pd.DataFrame(data)
- excel_path = os.path.join(self.save_folder, "PDF汇总.xlsx")
- df.to_excel(excel_path, index=False)
- if __name__ == "__main__":
- root = tk.Tk()
- app = PDFCollectorApp(root)
- root.mainloop()
复制代码
报错如下
Traceback (most recent call last):
File "D:\PYTHON_NEW\pack20240926\pythonProject1\PDF整理为excel目录带链接.py", line 7, in <module>
class PDFCollectorApp:
File "D:\PYTHON_NEW\pack20240926\pythonProject1\PDF整理为excel目录带链接.py", line 62, in PDFCollectorApp
'名称': [os.path.splitext(pdf)[0] for pdf in pdf_files],
^^^^^^^^^
NameError: name 'pdf_files' is not defined. Did you mean: 'pdf_folder'?
Process finished with exit code 1 |
|