隔两个取一个文件
先要把一个文件下的文件都遍历一遍,然后把路径保存到一个列表中,然后每隔两个取出一个定义一个新的列表,这个列表里的元素就是要复制的文件
import shutil
import os
source_path = r"F:\CR的均值化数据\train"
destination_path = r"F:\目标文件夹的路径"
result = h5_files[::3]
for filename in result:
source_file = os.path.join(source_path, filename)
destination_file = os.path.join(destination_path, filename)
shutil.copy2(source_file, destination_file)
原始文件夹下的目录
复制后文件下的目录
然后再把这个复制的文件夹下的文件按照7:2:1复制到三个文件夹中
import random
import shutil
import os
source_path = r"F:\复制文件\train"
destination_path1 = r"F:\复制文件\train1"
destination_path2 = r"F:\复制文件\valid"
destination_path3 = r"F:\复制文件\test"
# 设置随机数种子
random.seed(42)
# 获取复制后的文件列表
copied_files = os.listdir(source_path)
# 计算每个文件夹应该包含的文件数量
total_files = len(copied_files)
folder1_count = total_files // 10 * 7
folder2_count = total_files // 10 * 2
folder3_count = total_files - folder1_count - folder2_count
# 随机打乱文件列表
random.shuffle(copied_files)
# 将文件按照比例分配到三个文件夹中
folder1_files = copied_files[:folder1_count]
folder2_files = copied_files[folder1_count:folder1_count+folder2_count]
folder3_files = copied_files[folder1_count+folder2_count:]
# 复制文件到目标文件夹
for filename in folder1_files:
source_file = os.path.join(source_path, filename)
destination_file = os.path.join(destination_path1, filename)
shutil.copy2(source_file, destination_file)
for filename in folder2_files:
source_file = os.path.join(source_path, filename)
destination_file = os.path.join(destination_path2, filename)
shutil.copy2(source_file, destination_file)
for filename in folder3_files:
source_file = os.path.join(source_path, filename)
destination_file = os.path.join(destination_path3, filename)
shutil.copy2(source_file, destination_file)