toeveryone.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import os
  2. import shutil
  3. import math
  4. def split_folder_by_extension(input_folder, output_base_folder, parts=5, move=False, extensions=('.tiff', '.jpg')):
  5. """
  6. 将指定文件夹中的文件(支持指定扩展名)按比例分成若干份保存到子文件夹中。
  7. 参数:
  8. - input_folder: 原始文件夹路径
  9. - output_base_folder: 输出的分组文件夹根路径
  10. - parts: 要分成几份
  11. - move: 是否移动文件(True 为移动,False 为复制)
  12. - extensions: 要处理的文件扩展名组成的元组,例如 ('.tiff', '.jpg')
  13. """
  14. # 获取符合扩展名的所有文件
  15. files = [f for f in os.listdir(input_folder) if f.lower().endswith(extensions)]
  16. total_files = len(files)
  17. if total_files == 0:
  18. print(f"No files found with extensions {extensions}")
  19. return
  20. # 排序确保一致性
  21. files.sort()
  22. # 每组的文件数
  23. files_per_group = math.ceil(total_files / parts)
  24. print(f"Total files: {total_files}")
  25. print(f"Splitting into {parts} parts, {files_per_group} files per part.")
  26. print(f"Extensions included: {extensions}")
  27. for i in range(parts):
  28. part_folder = os.path.join(output_base_folder, f"part_{i}")
  29. os.makedirs(part_folder, exist_ok=True)
  30. start_idx = i * files_per_group
  31. end_idx = min(start_idx + files_per_group, total_files)
  32. for filename in files[start_idx:end_idx]:
  33. src_path = os.path.join(input_folder, filename)
  34. dst_path = os.path.join(part_folder, filename)
  35. if move:
  36. shutil.move(src_path, dst_path)
  37. else:
  38. shutil.copy2(src_path, dst_path)
  39. print(f"Part {i}: {end_idx - start_idx} files saved to {part_folder}")
  40. # ✅ 示例调用
  41. if __name__ == '__main__':
  42. # input_folder = r'G:\python_ws_g\data\pcd2color_result\color_jpg'
  43. # output_base_folder = r'G:\python_ws_g\data\average'
  44. # input_folder = r'\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\515下午 57\pcd2color_result\color_jpg'
  45. input_folder = r'/data/share/zyh/master_dataset/circle/huayan_circle/day02/color'
  46. # output_base_folder = r'\\192.168.50.222\share\zyh\5月彩色钢板数据汇总\515下午 57\average'
  47. output_base_folder = r'/data/share/zyh/master_dataset/circle/huayan_circle/day02/average'
  48. # 调用函数,自定义扩展名和分几份
  49. split_folder_by_extension(
  50. input_folder=input_folder,
  51. output_base_folder=output_base_folder,
  52. parts=8,
  53. move=False,
  54. extensions=('.tiff', '.jpg', '.png') # 支持 .tiff 和 .jpg 文件
  55. )