filer-filter.py 1.7 KB

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