当前位置:   article > 正文

基于python实现将一个文件夹中的图片移动到另一个文件夹_python复制图片到另一个文件夹

python复制图片到另一个文件夹

深度学习时,往往需要划分训练集、测试集以及验证集。在之前,我已经介绍了利用keras中的ImageDataGenerator方法实现数据集的划分。但是原文件夹中的数据,并没有真正的划分到两个文件夹中。这次介绍的这个方法,可以按照一定的比例或者数量将数据从一个文件夹移动到另一个文件夹。
如下所示的文件夹:一共有24个子文件夹
在这里插入图片描述
每个文件夹中有500张左右的图片。

1.按照比例划分

import os, random, shutil
def moveFile(fileDir, tarDir):
    pathDir = os.listdir(fileDir)  # 取图片的原始路径
    filenumber = len(pathDir)
    rate = 0.2 # 抽取图片的比例,自己定义即可
    picknumber = int(filenumber * rate)  # 所抽取图片的数量
    sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片
    for name in sample:
        shutil.move(fileDir + name, tarDir + name)

if __name__ == '__main__':
    fileDir = "E:/tmp/.keras/datasets/gestures/"  # 源图片文件夹路径,这是一级文件夹,里面的二级文件夹中包含着图片,如上图所示。
    tarDir = "E:/tmp/.keras/datasets/gestures_test/"  # 移动到新的文件夹路径,这里也是一级文件夹,二级文件夹存在与否无所谓
    for oneDir in os.listdir(fileDir):
        onefileDir = fileDir + oneDir + "/"  # 源文件夹的二级文件夹
        onetarDir = tarDir + oneDir + "/"  # 移动文件夹的二级文件夹
        # 判断移动文件夹中的二级文件夹是否存在,不存在则创建
        if not os.path.exists(onetarDir):
            os.makedirs(onetarDir)
        moveFile(onefileDir, onetarDir)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

划分结果如下所示:
起初移动文件夹是没有二级文件夹的,现已建好。
在这里插入图片描述
每个文件夹中有之前文件夹中的20%的数据。
在这里插入图片描述

2.按照数量划分

其实按照数量划分的原理与按照比例划分的原理类似,只不过是按照原理划分时,需要按照比例计算移动的数量,而按照数量划分直接规定好了数量。

import os, random, shutil
def moveFile(fileDir, tarDir):
    pathDir = os.listdir(fileDir)  # 取图片的原始路径
    picknumber = 200  # 所抽取图片的数量
    sample = random.sample(pathDir, picknumber)  # 随机选取picknumber数量的样本图片
    for name in sample:
        shutil.move(fileDir + name, tarDir + name)

if __name__ == '__main__':
    fileDir = "E:/tmp/.keras/datasets/gestures/"  # 源图片文件夹路径,这是一级文件夹,里面的二级文件夹中包含着图片,如上图所示。
    tarDir = "E:/tmp/.keras/datasets/gestures_test/"  # 移动到新的文件夹路径,这里也是一级文件夹,二级文件夹存在与否无所谓
    for oneDir in os.listdir(fileDir):
        onefileDir = fileDir + oneDir + "/"  # 源文件夹的二级文件夹
        onetarDir = tarDir + oneDir + "/"  # 移动文件夹的二级文件夹
        # 判断移动文件夹中的二级文件夹是否存在,不存在则创建
        if not os.path.exists(onetarDir):
            os.makedirs(onetarDir)
        moveFile(onefileDir, onetarDir)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

划分结果如下所示,之前已有103张图片,再次划分过200张,共303张:
在这里插入图片描述

参考博客

努力加油a啊

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/253982
推荐阅读
相关标签
  

闽ICP备14008679号