指定文件夹按指定数量分组文件

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这是一个Python脚本,使用`NStudyPy`库中的`PyFile`类将文件按指定数量分组。程序将图片从`F:\temp\cards`拆分到`F:\temp\target`下的4个文件夹,每组分别包含100、400、250和250个文件。如果文件不足,则提前结束。核心函数`random_split_s`随机拆分文件并创建目标文件夹,确保每个分组按预设数量分配文件。

指定文件夹按指定数量分组文件

背景和环境说明

本程序使用 python 3.10+
机器学习,打标中需要对数据集进行分批次,比如10个人,需要分10组,熟练的人分多个点等情况。需要对标注的图片进行分组,分批次导入标注系统进行标注。

依赖包下载

pip install -U NStudyPy

使用

from NStudyPy import PyFile

if __name__ == '__main__':   
    PyFile.random_split_s(source_dir=r'F:\temp\cards', target_dir=r'F:\temp\target', s=(100, 400, 250, 250))

分组后 在 F:\temp\target 文件夹下面 有4个文件夹,分别对应 100, 400, 250, 250 分组。文件数目太少会提前退出。

核心源码

def random_split_s(source_dir: str, target_dir: str, s=(100, 400, 250, 250)) -> None:
    """
    随机拆分文件; 不处理子文件夹
    :param source_dir: 源文件夹
    :param target_dir: 目标文件夹
    :param s: 拆分个数 (100, 400, 250, 250) 是每个分组的个数,直至所有文件都拆分完毕
    :return: None
    """
    files = os.listdir(source_dir)
    random.shuffle(files)

    sum_s = 0
    for idx, count in enumerate(s):
        _no = f'{idx:03}'
        image_g_dir = os.path.join(target_dir, _no)
        if not os.path.exists(image_g_dir):
            os.makedirs(image_g_dir)
        for file_name in files[sum_s:sum_s + count]:
            shutil.copy(os.path.join(source_dir, file_name), os.path.join(image_g_dir, file_name))
        sum_s += count
        if sum_s >= len(files):
            break
    # Done it
目录
相关文章
|
1月前
如何搜索[仅有1个文件]或[指定个数范围、名称、类型文件等复杂情况]的文件夹
该文介绍了使用特定工具批量搜索文件夹的教程。首先,从提供的百度网盘或蓝奏云链接下载工具。然后打开工具,切换到批量复制板块,并通过快捷键Ctrl+5进入。接着,在工具边缘触发搜索添加功能,选择要搜索的文件夹并设置过滤条件。在过滤窗口中,根据文件和文件夹的数量以及指定的后缀名(如.html)来设定条件。例如,设置条件查找仅包含1个.html文件的文件夹。应用过滤条件后开始搜索,结果将显示在界面中,可通过双击行号或右键操作来查看和管理搜索结果。通过调整过滤条件的精确度,可以更准确地找到所需内容。该方法适用于各种复杂的搜索需求,结合不同按钮和选项能实现更多功能。
|
2月前
如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合
该文介绍了一个工具的使用方法,通过它可以从多个文件夹中批量提取并合并文件。文中提供了两个下载链接(度娘网盘和蓝奏云)并附有提取码。工具主要用于平均分配文件到指定文件夹,例如将100张图片平均放入50个文件夹,每个文件夹2张。操作步骤包括创建目标文件夹、添加源文件夹路径、启用“平均复制”选项,然后执行任务。最后,展示了操作完成后文件夹内的正确分布情况。
57 10
|
2月前
|
Windows
(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制
该文介绍了如何使用特定工具进行批量文件整理。首先,需要从提供的百度网盘和蓝奏云链接下载工具,并用提取码解锁。接着,打开工具的批量复制功能,将待整理的图片文件拖入“来源路径”,目标文件夹拖入“终点路径”。通过层级过滤排除不需要的路径。然后,利用多级匹配设置,提取文件名和路径中的关键词,如“动物”、“小型”、“食草”等,设置复制后的文件重命名规则。最后,执行批量复制,完成文件的智能分类与命名。整个过程旨在根据文件的原始分类信息,自动将其移动到相应的新目录结构下。
|
2月前
如何批量重命名,把文件(夹)名的内容位置调整(前后移动)
该文介绍了如何使用一个工具批量修改文件名,将"中文[数字]"格式改为"中文 - 数字"。首先,从提供的百度网盘或蓝奏云链接下载工具,使用提取码获取。接着,在工具中选择文件批量复制模块,通过拖放或导入按钮添加文件或文件夹。然后,设置两个规则:一个提取中文(2个字符),另一个提取数字(20个字符)。预览无误后,选择方案3,以自定义内容("规则1 空格-空格 规则2")重命名,并确保关联到之前创建的规则。最后,执行重命名操作,查看结果,文件名应已按预期更改。
|
2月前
无规律快速批量重命名文件(夹)-固定命名
本文介绍了一个工具的使用方法,用于批量修改文件名。首先在文中提供了两个下载链接:百度网盘(提取码:qwu2)和蓝奏云(提取码:2r1z)。接着,展示了如何通过该工具的“文件批量复制”功能提取文件路径,并在“文章”版块中处理这些路径,提取出目标文件名。然后,在“文字批量替换”版块中,创建规则并保存,用于文件名的重命名。最后,回到“批量复制”版块,选择重命名功能,将目标路径与规则对应,执行重命名操作。整个过程旨在将大量无规律的文件名改为预设的目标文件名。
|
2月前
|
JavaScript
nodejs统计文件/文件夹数量
nodejs统计文件/文件夹数量
|
2月前
|
Python
基于Python获取文件夹中文件数量与其子文件夹中文件数量
基于Python获取文件夹中文件数量与其子文件夹中文件数量
|
9月前
|
存储 C++ Python
C++-筛选文件夹中符合要求的文件并拷贝出来(以手机号码查找为例)
C++-筛选文件夹中符合要求的文件并拷贝出来(以手机号码查找为例)
|
9月前
|
C#
C# 统计指定文件夹下的文件
C# 统计指定文件夹下的文件 需要:统计某一指定文件夹下的文件数目和文件的全路径 示例代码: /// <summary> /// 统计文件夹内的文件 /// </summary> /// <param name="path">指定的文件夹路径</param> /// <returns></returns> ...
37 0