# 适用于csv文件第一列为文件路径,第二列为数据集标签
# -*- coding: utf-8 -*-
import csv
import shutil
import os
target_path = '预存储文件夹路径'
original_path = '原文件夹路径'
with open('csv文件路径****.csv',"rt") as csvfile:
reader = csv.reader(csvfile)
rows= [row for row in reader]
for row in rows:
if os.path.exists(original_path+row[1]) :
full_path = row[0]
shutil.move(full_path, row[1] +'/')
else :
if not os.path.exists(target_path + row[1]):
os.makedirs(target_path + row[1])
full_path = row[0]
shutil.move(full_path, target_path + row[1] + '/')
- 情况二:csv文件中没有实际路径,只有文件名
- 数据集没有按类别标签进行分子文件夹,如何根据这个csv文件的ClassId生成子类别文件夹,且csv文件中的Path只是文件名,不是全部路径
-
import os
import shutil
import pandas as pd
# 读取CSV文件
df = pd.read_csv('csv文件路径')
# 创建存储文件的目标文件夹
output_folder = '预存储文件夹路径'
os.makedirs(output_folder, exist_ok=True)
# 遍历数据行
for index, row in df.iterrows():
class_id = row['ClassId']
file_name = row['Path']
source_path = os.path.join('未分类数据集路径', file_name) # 假设文件在一个文件夹中
target_folder = os.path.join(output_folder, str(class_id))
os.makedirs(target_folder, exist_ok=True)
target_path = os.path.join(target_folder, file_name)
shutil.move(source_path, target_path)
print('文件移动完成。')