使用 Python 代码实现从特定目录中随机选择文件并按照指定比例复制到其他文件夹的功能。

代码示例:

import os
import random
import shutil

source_dir = '/data/zhaoyi/prodata/language/Cantonese/teal'
target_dir = '/data/zhaoyi/prodata/language2'

# 获取所有文件夹的路径
folders = [folder for folder in os.listdir(source_dir) if os.path.isdir(os.path.join(source_dir, folder))]

for folder in folders:
    wav_dir = os.path.join(source_dir, folder, 'Wav')
    if not os.path.exists(wav_dir):
        continue
    
    # 获取Wav目录下的所有文件
    files = [file for file in os.listdir(wav_dir) if os.path.isfile(os.path.join(wav_dir, file))]
    
    # 随机选择十个文件
    selected_files = random.sample(files, 10)
    
    # 创建train、dev和eval文件夹
    train_dir = os.path.join(target_dir, 'train', folder)
    dev_dir = os.path.join(target_dir, 'dev', folder)
    eval_dir = os.path.join(target_dir, 'eval', folder)
    os.makedirs(train_dir, exist_ok=True)
    os.makedirs(dev_dir, exist_ok=True)
    os.makedirs(eval_dir, exist_ok=True)
    
    # 按照1:1:3的数量比将文件复制到对应目录下
    for i, file in enumerate(selected_files):
        if i % 5 == 0:
            shutil.copy2(os.path.join(wav_dir, file), os.path.join(eval_dir, file))
        elif i % 4 == 0:
            shutil.copy2(os.path.join(wav_dir, file), os.path.join(dev_dir, file))
        else:
            shutil.copy2(os.path.join(wav_dir, file), os.path.join(train_dir, file))

说明:

  • source_dir 变量表示源目录,target_dir 变量表示目标目录,请根据实际情况修改这两个变量的值。
  • 代码首先遍历源目录下的所有文件夹,然后在每个文件夹的 Wav 目录下随机选择十个文件。
  • 代码最后将选择的文件按照 1:1:3 的比例复制到目标目录下的 traindeveval 文件夹中。
  • shutil.copy2() 函数用于复制文件,并保留文件元数据。

使用步骤:

  1. 将以上代码保存为 .py 文件。
  2. 修改代码中的 source_dirtarget_dir 变量的值。
  3. 运行代码。

代码会根据您的设置,自动完成文件随机选择和复制操作。

注意:

  • 该代码适用于包含 Wav 文件夹的目录结构。
  • 您可以根据自己的需求修改代码,例如调整文件选择数量、比例等。
Python 代码:随机选择文件并按比例复制到不同文件夹

原文地址: https://www.cveoy.top/t/topic/p6Rj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录