You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:如何从source_folder随机复制500张图片至目标文件夹

完善代码实现随机选取并复制图片

方案一:直接从源文件夹读取图片路径

如果无需依赖给定的图片名称列表,直接从文件夹读取的方式更健壮,能自动适配文件夹内的实际图片:

import glob
import random
import shutil
import os

# 定义源文件夹和目标文件夹路径
source_dir = "./source_folder"
target_dir = "./target_folder"

# 确保目标文件夹存在,不存在则自动创建
os.makedirs(target_dir, exist_ok=True)

# 获取源文件夹下所有jpg格式图片的完整路径
all_images = glob.glob(os.path.join(source_dir, "*.jpg"))

# 随机选取500张不重复的图片
selected_images = random.sample(all_images, 500)

# 批量复制选中的图片到目标文件夹
for img_path in selected_images:
    img_filename = os.path.basename(img_path)
    target_img_path = os.path.join(target_dir, img_filename)
    shutil.copy(img_path, target_img_path)

方案二:基于给定的图片名称列表处理

如果必须使用你提供的图片名称列表,可使用以下代码,同时增加了文件存在检查避免报错:

import random
import shutil
import os

# 你的图片名称列表
image_list = ['1.jpg', '2.jpg', '3.jpg', ..., '1200.jpg']
source_dir = "./source_folder"
target_dir = "./target_folder"

# 确保目标文件夹存在
os.makedirs(target_dir, exist_ok=True)

# 从列表中随机选500个不重复的文件名
selected_filenames = random.sample(image_list, 500)

for filename in selected_filenames:
    source_path = os.path.join(source_dir, filename)
    # 检查源文件是否存在,避免因列表中存在无效文件名导致报错
    if os.path.exists(source_path):
        target_path = os.path.join(target_dir, filename)
        shutil.copy(source_path, target_path)

关键改进说明

  • 替换原代码中random.choice的用法:random.sample可一次性选取指定数量的不重复元素,比循环选单个元素更高效且不会出现重复选取的问题
  • 新增os.makedirs确保目标文件夹存在,避免复制时抛出文件夹不存在的异常
  • 使用os.path.join拼接路径,适配Windows、Linux等不同操作系统的路径格式
  • 导入shutil模块实现文件复制,这是Python处理文件复制的标准工具

内容的提问来源于stack exchange,提问作者A.j

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:35:50