import os import shutil import pandas as pd # 配置参数 EXCEL_FILE = r"E:\code\zd\desktop\offline-pdf-app\xlsx\逻辑狗·幼儿思维游戏课程-大班下.xlsx" SOURCE_FOLDER = r"C:\Users\lvkun\Desktop\逻辑狗下\pptx" # 需要检查的文件夹 DEST_FOLDER = r"E:\code\zd\desktop\offline-pdf-app\files" # 复制匹配文件夹的目标路径 COLUMN_INDEX = 2 # 需要读取的列(如果有表头,用列名,如 'ID') # 确保目标文件夹存在 os.makedirs(DEST_FOLDER, exist_ok=True) # 读取 Excel(无表头) df = pd.read_excel(EXCEL_FILE, header=None, dtype=str) # 获取 C 列的 URL,并提取 A(去掉前后部分) # 这里的提取规则是去掉 `https://res-teacher.luojigou.vip/pptx/` 和 `/index.html` def extract_a(url): return url # 提取所有 A numbers = set(df.iloc[:, COLUMN_INDEX].dropna().apply(extract_a).dropna()) # 打印调试信息 print("Excel 读取的字符串 A:", numbers) # 遍历源文件夹,查找匹配的子文件夹 for folder_name in os.listdir(SOURCE_FOLDER): folder_path = os.path.join(SOURCE_FOLDER, folder_name) if os.path.isdir(folder_path): # 仅处理文件夹 if folder_name in numbers: # 文件夹名匹配字符串 A dest_path = os.path.join(DEST_FOLDER, folder_name) if not os.path.exists(dest_path): # 避免重复移动 shutil.move(folder_path, dest_path) # 移动文件夹 print(f"✅ 移动: {folder_name} -> {DEST_FOLDER}") else: print(f"⚠️ 目标文件夹已存在: {folder_name},跳过") numbers.remove(folder_name) # 确保每个文件夹只移动一次 # 完成 print("🎉 任务完成!")