python - 如何将目录的一部分复制到新目录中?
问题描述
我正在编写一个看起来像这样的函数
def copy_file(source, training, testing, split_size):
在哪里:
-source 是我要从中复制的源目录
-training 是要复制到的目录
-testing 是另一个要复制到的目录
-split_size 是我想要复制到测试和训练的源的百分比,以小数点表示(例如,如果 split_size 为 0.5,我将复制 50% 的源到训练,50% 到测试)
我正在使用shutil
库来使用副本,我将遍历我的源文件以复制每个文件,例如
if len(image) > 0:
copy(image, training)
但我不确定如何指定这个函数的 split_size 部分。我确信这并不复杂,我只是在复制文件方面经验很少,这是我第一次使用shutil。
解决方案
您可以使用os
package 来获取源目录中的文件列表。获得文件列表后,您可以根据传递的百分比值将列表拆分为两个列表。之后遍历两个列表以复制相应目录中的文件。
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)
推荐阅读
- github - Azure DevOps Server 2019 - 创建管道 - 你的代码在哪里没有 GitHub yaml 选项
- node.js - 如何将数据库中价格的字符串格式更改为 mongodb 中的整数格式?
- nextcloud - 简单的 API 调用被重定向
- jmeter - 如何在 CI/CD 管道中读取和比较 jmeter 结果
- r - ALSA lib pcm.c:8526:(snd_pcm_recover) 发生欠载
- web3 - 如何处理 RSK 中的“事务随机数太高”错误?
- laravel - 如何在 laravel 中获取最近 30 天的数据?
- java - 我可以以编程方式设置属性 spring.cloud.function.definition 吗?
- python - 仅删除大多数类样本的缺失数据百分比超过百分比的行
- android - Flutter 中的依赖项会创建自己的 build.gradle 和 settings.gradle 文件吗?