Python实现从一个文件夹下随机抽取一定数量(比例)的图片移动到另一个文件夹

Posted K同学啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现从一个文件夹下随机抽取一定数量(比例)的图片移动到另一个文件夹相关的知识,希望对你有一定的参考价值。

按照数量随机选取图片

import os, random, shutil
def moveFile(fileDir,tarDir):
        pathDir = os.listdir(fileDir)    #取图片的原始路径
        picknumber=500                  # 自定义选取图片数目
        sample = random.sample(pathDir, picknumber)  #随机选取picknumber数量的样本图片

        for name in sample:
            shutil.move(fileDir+name, tarDir+name)

if __name__ == '__main__':
    fileDir = "./一级目录A/"    #源图片文件夹路径
    tarDir  = "./一级目录B/"       #移动到新的文件夹路径
    
    for oneDir in os.listdir(fileDir): 
        onefileDir = fileDir+oneDir+"/"  # A的二级目录
        onetarDir  = tarDir+oneDir+"/"   # B的二级目录
        # 判断文件夹是否存在,不存在则创建
        if not os.path.exists(onefileDir):
            os.makedirs(onefileDir)
        if not os.path.exists(onetarDir):
            os.makedirs(onetarDir)
        
        moveFile(onefileDir,onetarDir)

按照比例随机选取图片

import os, random, shutil
def moveFile(fileDir,tarDir):
        pathDir = os.listdir(fileDir)    #取图片的原始路径
        filenumber=len(pathDir)
        rate=0.1                        #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
        picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片
        sample = random.sample(pathDir, picknumber)  #随机选取picknumber数量的样本图片

        for name in sample:
            shutil.move(fileDir+name, tarDir+name)

if __name__ == '__main__':
    fileDir = "./一级目录A/"    #源图片文件夹路径
    tarDir  = "./一级目录B/"       #移动到新的文件夹路径
    
    for oneDir in os.listdir(fileDir): 
        onefileDir = fileDir+oneDir+"/"  # A的二级目录
        onetarDir  = tarDir+oneDir+"/"   # B的二级目录
        # 判断文件夹是否存在,不存在则创建
        if not os.path.exists(onefileDir):
            os.makedirs(onefileDir)
        if not os.path.exists(onetarDir):
            os.makedirs(onetarDir)
        
        moveFile(onefileDir,onetarDir)

以上是关于Python实现从一个文件夹下随机抽取一定数量(比例)的图片移动到另一个文件夹的主要内容,如果未能解决你的问题,请参考以下文章

mysql随机抽取一定数量的记录

从总数中生成一定数量的随机数

华为OD机试真题 Python 实现分奖金2022.11 Q4 新题

如何用python实现随机抽取? 规则如下: 所有数据分成n组; 每组有m个数; 抽取数据时,每组

如何在不替换的情况下随机抽取样本后引导函数

python中怎么从一个列表中可重复的随机抽取元素构成新列表?