| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import os
- import shutil
- import random
- from datetime import datetime
- from pathlib import Path
- def copy_random_images(source_folder, num_images=1000):
- """
- 从源文件夹随机抽取指定数量的图片,并复制到以当天日期命名的新文件夹中。
-
- :param source_folder: 源图片文件夹路径
- :param num_images: 要抽取的图片数量,默认1000
- """
- # 支持的图片扩展名
- image_extensions = {'.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp'}
-
- # 获取当前日期作为目标文件夹名
- today = datetime.now().strftime('%Y%m%d')
- target_folder = Path(today)
-
- # 检查源文件夹是否存在
- source_path = Path(source_folder)
- if not source_path.exists():
- print(f"错误:源文件夹 '{source_folder}' 不存在。")
- return
-
- if not source_path.is_dir():
- print(f"错误:'{source_folder}' 不是一个有效的文件夹。")
- return
-
- # 获取所有图片文件
- image_files = [
- f for f in source_path.iterdir()
- if f.is_file() and f.suffix.lower() in image_extensions
- ]
-
- # 检查图片数量是否足够
- if len(image_files) < num_images:
- print(f"警告:源文件夹中只有 {len(image_files)} 张图片,少于要求的 {num_images} 张。将复制全部图片。")
- num_images = len(image_files)
-
- # 随机抽样
- selected_images = random.sample(image_files, num_images)
-
- # 创建目标文件夹
- try:
- target_folder.mkdir(exist_ok=True)
- print(f"目标文件夹 '{today}' 已创建或已存在。")
- except Exception as e:
- print(f"无法创建目标文件夹 '{today}': {e}")
- return
-
- # 复制图片
- copied_count = 0
- for img_file in selected_images:
- try:
- shutil.copy2(img_file, target_folder / img_file.name)
- copied_count += 1
- except Exception as e:
- print(f"复制文件 {img_file.name} 时出错: {e}")
-
- print(f"已完成。共复制 {copied_count} 张图片到 '{today}' 文件夹。")
- # ================== 使用示例 ==================
- if __name__ == "__main__":
- # 替换为你的源图片文件夹路径
- source_dir = r"D:\data\extracted_frames_500" # ← 修改这里为你自己的路径
-
- copy_random_images(source_dir, 1000)
|