帮我写个python程序将Gdata目录下每个文件夹中图片以8:2的比例随机划分训练集和测试集训练图片创建新目录Gdatatrain测试图片放入新建Gdatatest
以下是一个可能的解决方案:
import os
import random
import shutil
# 设置数据目录和训练/测试目录
data_dir = r'G:\data'
train_dir = os.path.join(data_dir, 'train')
test_dir = os.path.join(data_dir, 'test')
# 如果训练/测试目录不存在,则创建它们
if not os.path.exists(train_dir):
os.makedirs(train_dir)
if not os.path.exists(test_dir):
os.makedirs(test_dir)
# 遍历数据目录下的所有文件夹
for foldername in os.listdir(data_dir):
folderpath = os.path.join(data_dir, foldername)
if not os.path.isdir(folderpath):
continue # 跳过非文件夹的文件
# 创建训练/测试目录下的子目录
train_folder = os.path.join(train_dir, foldername)
test_folder = os.path.join(test_dir, foldername)
if not os.path.exists(train_folder):
os.makedirs(train_folder)
if not os.path.exists(test_folder):
os.makedirs(test_folder)
# 遍历文件夹中的所有图片文件
for filename in os.listdir(folderpath):
filepath = os.path.join(folderpath, filename)
if not os.path.isfile(filepath):
continue # 跳过非文件的子目录
# 随机划分为训练/测试
if random.random() < 0.8: # 80% 的概率为训练集
dest_folder = train_folder
else:
dest_folder = test_folder
# 将图片文件复制到目标目录
dest_filepath = os.path.join(dest_folder, filename)
shutil.copy(filepath, dest_filepath)
这个程序首先设置了数据目录和训练/测试目录,然后遍历数据目录下的所有文件夹。对于每个文件夹,它创建了训练/测试目录下的对应子目录,并遍历文件夹中的所有图片文件。对于每个图片文件,它使用 random.random() 生成一个随机数,如果这个随机数小于 0.8,就把图片文件复制到训练目录下的子目录中,否则就复制到测试目录下的子目录中。最后,它使用 shutil.copy() 函数进行文件复制操作
原文地址: https://www.cveoy.top/t/topic/fk1G 著作权归作者所有。请勿转载和采集!