如何将一定比例的目录复制到新目录中?

问题描述

我正在编写一个看起来像这样的函数

def copy_file(source,training,testing,split_size):

其中:

-source是我要从中复制的源目录

-培训是要复制到的目录

-testing是要复制到的另一个目录

-split_size是我要复制到测试和培训中的的百分比,用小数点表示(例如,如果split_size为0.5,我会将源的50%复制到培训中,将50%的源复制到培训中。测试)

我正在使用shutil库来使用copy,我将遍历源文件以复制每个文件,类似

       if len(image) > 0:
          copy(image,training)

但是我不确定如何指定此函数的split_size部分。我确信这并不复杂,我只是很少有复制文件的经验,这是我第一次使用shutil。

解决方法

您可以使用os包来获取源目录中文件的列表。获得文件列表后,您可以根据传递的百分比值将列表分为两个列表。之后,遍历两个列表以将文件复制到相应目录中。

import os
import shutil

def copy_file(src,train,test,percent):
  files_list = os.listdir(src)
  splitVal = int(round(percent*len(file_list)))
  train_file_list = files_list[:splitVal]
  test_file_list = files_list[splitVal:]
  
  # now iterate through the two list and copy the files to respective
  # directory using shutil.copy(file_name,dest_dir)