consep_file

import os
import shutil
import math

def redistribute_files(source_dir, target_dir):
    # 获取源目录中的所有子目录
    subdirectories = [os.path.join(source_dir, d) for d in os.listdir(source_dir) if os.path.isdir(os.path.join(source_dir, d))]
    
    for subdirectory in subdirectories:
        # 获取每个子目录中的文件列表
        files = [f for f in os.listdir(subdirectory) if os.path.isfile(os.path.join(subdirectory, f))]
        num_files = len(files)
        
        # 检查文件数量是否超过256
        if num_files > 256:
            multiplier = math.ceil(num_files / 256)
            print(f"{subdirectory} has {num_files} files, which is {multiplier} times more than 256.")
            
            # 创建目标目录,如果它不存在
            new_target_dir = os.path.join(target_dir, os.path.basename(subdirectory))
            if not os.path.exists(new_target_dir):
                os.makedirs(new_target_dir)
            
            # 创建新的子文件夹并分配文件
            for i, file in enumerate(files):
                subfolder = os.path.join(new_target_dir, f"subfolder_{i // 256 + 1}")
                if not os.path.exists(subfolder):
                    os.makedirs(subfolder)
                shutil.copy(os.path.join(subdirectory, file), subfolder)
            print(f"Files have been redistributed into {multiplier} folders under {new_target_dir}.")
        else:
            print(f"No need to redistribute. The number of files in {subdirectory} is {num_files}, which is not over 256.")

# 示例用法
source_directory = 'path_to_your_source_directory'
target_directory = 'path_to_your_target_directory'
redistribute_files(source_directory, target_directory)
import os
import shutil
import math

def redistribute_files(source_dir, target_dir, image_dir):
    # 获取源目录中的所有子目录
    subdirectories = [os.path.join(source_dir, d) for d in os.listdir(source_dir) if
                      os.path.isdir(os.path.join(source_dir, d))]

    for subdirectory in subdirectories:
        # 获取每个子目录中的文件列表
        files = [f for f in os.listdir(subdirectory) if os.path.isfile(os.path.join(subdirectory, f))]
        num_files = len(files)
        
        # 检查文件数量是否超过256
        if num_files > 256:
            basename = os.path.basename(subdirectory)
            multiplier = math.ceil(num_files / 256)
            print(f"{subdirectory} has {num_files} files, which is {multiplier} times more than 256.")

            # 创建目标目录,如果它不存在
            new_target_dir = os.path.join(target_dir, basename)
            if not os.path.exists(new_target_dir):
                os.makedirs(new_target_dir)

            # 查找同名的 PNG 文件
            png_file_path = os.path.join(image_dir, basename + '.png')
            if os.path.exists(png_file_path):
                # 创建新的子文件夹并分配文件
                for i, file in enumerate(files):
                    subfolder = new_target_dir if i // 256 == 0 else new_target_dir + '_copy' + str(i // 256)
                    if not os.path.exists(subfolder):
                        os.makedirs(subfolder)
                    shutil.copy(os.path.join(subdirectory, file), subfolder)
                    if i % 256 == 0:  # 每256个文件复制一次PNG文件
                        png_target_path = os.path.join(subfolder, basename + '.png')
                        shutil.copy(png_file_path, png_target_path)
                print(f"Files and associated PNG have been redistributed into {multiplier} folders under {new_target_dir}.")
            else:
                print(f"No PNG file found for {basename}.")
        else:
            print(f"No need to redistribute. The number of files in {subdirectory} is {num_files}, which is not over 256.")

# 示例用法
source_directory = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_mask'
target_directory = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_mask (copy)'
image_directory = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_img'
redistribute_files(source_directory, target_directory, image_directory)
import pandas as pd
import os
import shutil
import math

# 读取CSV文件
csv_path = '/mnt/data/max_files.csv'  # 替换成你的文件路径
df = pd.read_csv(csv_path)

# 筛选datasets列为'consep'的行
consep_files = df[df['datasets'] == 'consep']

# 任务相关的目录
source_dir = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_mask'
target_dir = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_mask (copy)'
image_dir = '/media/wagnchogn/D/path_sam/0513/CoNSeP/test_img'

# 遍历找到的文件名
for file_name in consep_files['file_name']:
    folder_path = os.path.join(source_dir, file_name)
    if os.path.exists(folder_path):
        files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
        num_files = len(files)

        # 检查是否需要处理文件
        if num_files > 256:
            files_to_move = files[256:]  # 需要移动的文件
            num_moves = math.ceil(len(files_to_move) / 256)

            # 移动文件
            for i in range(num_moves):
                new_folder = os.path.join(target_dir, f'{file_name}_extra_{i+1}')
                os.makedirs(new_folder, exist_ok=True)
                for file in files_to_move[i*256:(i+1)*256]:
                    shutil.move(os.path.join(folder_path, file), new_folder)

            # 处理图像文件
            image_path = os.path.join(image_dir, file_name + '.png')
            if os.path.isfile(image_path):
                for i in range(num_moves + 1):
                    new_image_folder = os.path.join(image_dir, f'{file_name}_copy_{i+1}')
                    os.makedirs(new_image_folder, exist_ok=True)
                    shutil.copy(image_path, os.path.join(new_image_folder, file_name + '.png'))

            print(f"Processed {file_name}: files moved and images copied.")
        else:
            print(f"No need to process {file_name}, file count is within limit.")
    else:
        print(f"Directory {folder_path} does not exist.")

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值