使用python实现文件的转移

在机器学习案例里,需创建MNIST数据集,包含训练集和测试集。要将文件夹下图片按类别分别抽取三分之一放入测试集文件夹,剩余三分之二放入训练集文件夹,且待移入文件夹未创建分类文件夹,后续给出了解决代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 案例描述

    在机器学习案例中要创建一个mnist的数据集。这个数据集中要有训练集和测试集。我需要把文件夹下几个文件中的图片,分别抽出三分之一的文件放到测试集文件夹中,剩余三分之二的文件放到训练集文件夹下。小小的难点是,文件夹中分了类别,这些类别不能改变。此外,待移入的文件夹中没有创建已经分类的文件夹。

  • 解决代码

import os
from PIL import Image

## python里面+和,的区别是什么来? ----+不带空格,自带空格。
resultDir = '.\\result'

for dirname in os.listdir(resultDir): ## 获取当前路径下的所有文件夹及文件名。 dirname是0、1、2.。。。文件夹的名字。
    FileList = [] ## 存放图片路径的列表。
    ## 提取出前三分之一的图片。
    for dirname_picture in os.listdir(os.path.join(resultDir, dirname)): ## 获取0、1、2.。。文件夹下的文件名。
        FileList.append(os.path.join(resultDir, dirname, dirname_picture))

    ## 将前三分之一的图片移动到test-images文件夹下的对应文件夹下。
    for dirpath_picture in FileList[:len(FileList)//3]: ## dirpath_picture是图片的相对路径.\\result\\0\\picture.png。注意要用'//'进行整出。float不支持。
        img = Image.open(dirpath_picture)
        ## 判断文件夹是否已经创建。
        path = os.path.join('.\\test-images', dirpath_picture.split('\\')[2])
        isExists = os.path.exists(path)
        ## 若0、1、2.。。文件夹不存在,则先创建文件夹。
        if not isExists:
            os.makedirs(path)
            print('创建成功')
        ## 更改文件的存储路径。
        img.save(os.path.join(path, dirpath_picture.split('\\')[3]))

    ## 将后三分之一的图片移动到training-images文件夹下的对应文件夹下。
    for dirpath_picture in FileList[len(FileList)//3:]: ## dirpath_picture是图片的相对路径.\\result\\0\\picture.png。
        img = Image.open(dirpath_picture)
        ## 判断文件夹是否已经创建。
        path = os.path.join('.\\training-images', dirpath_picture.split('\\')[2])
        isExists = os.path.exists(path)
        ## 若0、1、2.。。文件夹不存在,则先创建文件夹。
        if not isExists:
            os.makedirs(path)
            print('创建成功')
        ## 更改文件的存储路径。
        img.save(os.path.join(path, dirpath_picture.split('\\')[3]))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值