当我们分好数据集后,但是标签没有分,此时这份代码就派上用场了,根据数据集分标签
不多说,直接贴代码
```clike
from pathlib import Path
import os
import shutil
def get_all_files_with_pathlib(folder_path):
path = Path(folder_path)
all_files = [str(file) for file in path.rglob('*') if file.is_file()]
return all_files
# 示例使用
folder_path = 'E:1\\label'
files = get_all_files_with_pathlib(folder_path)
train_folder = 'E:image\\train'
# train_files = [os.path.splitext(f)[0] + '.jpg' for f in os.listdir(train_folder) if os.path.isfile(os.path.join(train_folder, f))]
train_files = get_all_files_with_pathlib(train_folder)
test_folder = 'E:1\\image\\test'
# test_files = [os.path.splitext(f)[0] + '.jpg' for f in os.listdir(test_folder) if os.path.isfile(os.path.join(train_folder, f))]
test_folder = get_all_files_with_pathlib(test_folder)
val_folder = 'E:1\\image\\val'
# val_files = [os.path.splitext(f)[0] + '.jpg' for f in os.listdir(val_folder) if os.path.isfile(os.path.join(train_folder, f))]
val_folder = get_all_files_with_pathlib(val_folder)
target_folder1 = 'E:1\\label1\\train'
target_folder2 = 'E:1\\label1\\test'
target_folder3 = 'E:1\\label1\\val'
for file in files:
file_name = file.split('\\')[-1].rsplit('.', 1)[0]
print(file)
file_name1 = 'E:1\\image\\train\\' + file_name
if file_name1 in train_files:
# 如果存在,将文件复制到目标文件夹
if not os.path.exists(target_folder1):
os.makedirs(target_folder1)
shutil.copy2(file, os.path.join(target_folder1, os.path.basename(file)))
continue
file_name2 = 'E:1\\image\\test\\' + file_name
if file_name2 in test_folder:
# 如果存在,将文件复制到目标文件夹
if not os.path.exists(target_folder2):
os.makedirs(target_folder2)
shutil.copy2(file, os.path.join(target_folder2, os.path.basename(file)))
continue
file_name3 = 'E:1\\image\\val\\' + file_name
if file_name3 in val_folder:
# 如果存在,将文件复制到目标文件夹
if not os.path.exists(target_folder3):
os.makedirs(target_folder3)
shutil.copy2(file, os.path.join(target_folder3, os.path.basename(file)))
continue