如何在桌面文件夹新增PDF时自动运行Python转换代码?
实现PDF自动转换为CSV的监控方案
核心需求
- 监控桌面指定文件夹,仅对新上传的PDF文件自动执行CSV转换
- 基于现有
tabula转换逻辑,结合watchdog实现自动化
完整监控实现代码
以下是可直接运行的watchdog监控脚本,仅响应新创建的PDF文件,避免重复转换:
import time import tabula from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler # 替换为你的目标监控文件夹路径 MONITOR_FOLDER = r"C:\Users\YourName\Desktop\指定文件夹" class PDFConverterHandler(FileSystemEventHandler): def on_created(self, event): # 忽略文件夹创建事件,只处理文件 if not event.is_directory: file_path = event.src_path # 仅处理PDF文件 if file_path.lower().endswith(".pdf"): # 等待文件完全写入(避免VBA还没传输完成就触发转换) time.sleep(2) # 构造CSV输出路径,与原PDF同目录、同名 csv_path = file_path.rsplit(".", 1)[0] + ".csv" # 执行转换逻辑 tabula.convert_into(file_path, csv_path, pages="all") print(f"转换完成:{file_path} -> {csv_path}") if __name__ == "__main__": event_handler = PDFConverterHandler() observer = Observer() observer.schedule(event_handler, MONITOR_FOLDER, recursive=False) observer.start() print(f"开始监控文件夹:{MONITOR_FOLDER}") try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()
关键细节说明
- 防止提前转换:添加
time.sleep(2)是为了等待VBA完成PDF文件的写入,避免因文件未完全保存导致转换失败 - 文件过滤:通过后缀判断仅处理PDF格式文件,忽略其他类型的新增文件
- 输出路径匹配:CSV文件与原PDF保持同目录、同名,便于后续查找和管理
- 终止方式:按下
Ctrl+C即可停止监控脚本
配合VBA的注意事项
- 确保VBA将PDF文件保存到
MONITOR_FOLDER指定的绝对路径,路径需与Python脚本中的配置完全一致 - VBA保存文件时建议使用覆盖模式,避免因重名文件导致的传输异常
内容的提问来源于stack exchange,提问作者SpanishCoder
相关产品推荐
相关产品推荐

