import os
import csv
import shutil
import pandas as pd

def index_label(photo_folder, csv_name):
    # 读取照片数据文件夹
    photo_files = os.listdir(photo_folder)
    # 提取数字作为索引
    indexes = [int(os.path.splitext(file)[0]) for file in photo_files]
    # 打开原始CSV文件和新的CSV文件
    csv_file = 'data/emotion.csv'
    new_csv_file = 'data/'+csv_name+'.csv'
    with open(csv_file, 'r') as file:
        reader = csv.reader(file)
        data = list(reader)
    # 添加索引列
    header = ['索引', '标签']
    result = [header] + [[index, data[index][0]] + data[index][1:] for index in indexes if index < len(data)]
    # 将结果保存为新的CSV文件
    # new_csv_file = '新的CSV文件路径'
    with open(new_csv_file, 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(result)

def image_classification(photo_folder, csv_name):
    # 读取包含索引和标签的数据文件
    # 定义要删除的文件夹路径
    target_folder = 'data_classification/' + csv_name  # 目标文件夹路径

    # 遍历文件夹中的文件并删除
    for filename in os.listdir(target_folder):
        file_path = os.path.join(target_folder, filename)
        try:
            if os.path.isfile(file_path) or os.path.islink(file_path):
                os.unlink(file_path)  # 删除文件
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)  # 递归删除文件夹及其内容
        except Exception as e:
            print(f'无法删除文件：{file_path}')

    new_csv_file = 'data/' + csv_name + '.csv'
    df = pd.read_csv(new_csv_file, encoding='GBK')
    # 设置原始文件夹路径和目标文件夹路径
    # 遍历 DataFrame
    for index, row in df.iterrows():
        file_index = row['索引']  # 索引对应的列名
        file_label = row['标签']  # 标签对应的列名
        source_file = os.path.join(photo_folder, f'{file_index}.jpg')  # 原始文件路径
        target_folder_label = os.path.join(target_folder, str(file_label))  # 目标文件夹路径
        # 创建对应标签的目标文件夹（如果不存在）
        os.makedirs(target_folder_label, exist_ok=True)
        # 复制文件到目标文件夹
        shutil.copy(source_file, target_folder_label)