【python】将包含大量文件的文件夹分割为若干包含少数文件的文件夹

将一个包含15.4w个文件的文件夹,分割为155个文件夹,其中每个文件夹包含1000个文件

# -- coding: utf-8 --
import os
import shutil


# 分割前文件夹路径
source_directory = 'D:\Download\Annotations'

# 分割后文件夹路径
destination_directory = 'D:\Download\Annotations_split'

# 创建新文件夹
for i in range(1, 156):  # 新建155个文件夹
    subfolder_path = os.path.join(destination_directory, f'Annotations_{i}')
    os.makedirs(subfolder_path, exist_ok=True)

# 读取原文件名称列表
file_list = os.listdir(source_directory)

# 对原文件名称列表排序
sorted_files = sorted(file_list)

# 按照每1000个文件一组进行分组,若剩下不足1000则为最后一组
file_groups = [sorted_files[i:i+1000] for i in range(0, len(sorted_files), 1000)]

# 使用copy生成新的文件夹
for i, group in enumerate(file_groups):
    for filename in group:
        source_path = os.path.join(source_directory, filename)
        destination_path = os.path.join(destination_directory, f'Annotations_{i+1}', filename)
        shutil.copy(source_path, destination_path)

print("Files have been ranked and split into subfolders.")

  • 应用场景:使用Colab的时候不能操作包含大量文件的文件夹,无论是上传还是读取都会出现文件丢失或速度很慢的情况,所以可以使用该方法分割为较少的文件夹。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值