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

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 这是一个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
目录
相关文章
|
项目管理 Python
深入理解Python中的os.chdir()方法
`os.chdir()`是Python中用于改变当前工作目录的方法,简化文件和目录操作。语法为`os.chdir(path)`,`path`是目标目录路径。示例中展示了如何切换及检查工作目录。它常用于脚本执行、文件操作和多项目管理。注意目标目录必须存在,否则会抛出异常。相关方法有`os.getcwd()`获取当前目录和`os.path.join()`拼接路径。使用时结合异常处理可提升效率。参考[Python官方文档](https://docs.python.org/3/library/os.html)。
706 3
|
算法 Python
Python 技术篇 - 操作excel实现单元格合并并居中实例演示,用openpyxl库为指定区域的单元格设置对齐样式和字体样式方法
Python 技术篇 - 操作excel实现单元格合并并居中实例演示,用openpyxl库为指定区域的单元格设置对齐样式和字体样式方法
1262 0
Python 技术篇 - 操作excel实现单元格合并并居中实例演示,用openpyxl库为指定区域的单元格设置对齐样式和字体样式方法
|
Docker 容器
docker容器查看所有没使用的镜像,并删除
docker容器查看所有没使用的镜像,并删除
1460 0
|
算法 搜索推荐 C++
【C++】sort()、stable_sort()和partial_sort()排序函数详解
【C++】sort()、stable_sort()和partial_sort()排序函数详解
624 0
|
监控 Java API
听我的,日志还是得好好打!
听我的,日志还是得好好打!
讲解:如何根据txt文本列出的文件名批量查找指定文件夹里的文件并复制到新的文件夹里 , 按照文件名批量复制文件 , 根据文件名批量复制 , 通过文件名批量复制文件
该文介绍了一款批量文件处理软件,用于解决三类问题:依据文件名清单批量复制图片、筛选PDF文件及删除指定文件。用户可从百度或腾讯下载链接获取软件。操作步骤包括加载文件夹、输入文件名清单、设置目标位置、选择操作类型(复制、剪切或删除)及匹配方式,然后开始查找。软件能快速处理大量文件,提高办公效率,避免手动操作。查找结果会显示在特定文件夹和日志中,记录每个操作详情。
1427 5
使用npm构建vite+vue+ts项目的两种方式
使用npm构建vite+vue+ts项目的两种方式
345 0
使用npm构建vite+vue+ts项目的两种方式
|
机器学习/深度学习 存储 数据可视化
特征选择的艺术:利用Scikit-learn提升模型性能
【7月更文第22天】在机器学习的实践中,特征选择是一项至关重要的步骤,它直接影响到模型的性能、训练速度以及对新数据的泛化能力。特征选择,或称为变量选择,旨在从原始特征集中识别并保留最相关、最有影响力的特征子集,同时剔除冗余或无关紧要的特征。本文将探讨特征选择的重要性,并通过使用Python中的Scikit-learn库演示几种有效的特征选择方法,以提升模型性能。
742 4
|
Swift
[!] Unable to determine Swift version for the following pods:
[!] Unable to determine Swift version for the following pods:
250 0
|
机器学习/深度学习 算法 Python
探索XGBoost:参数调优与模型解释
探索XGBoost:参数调优与模型解释
715 2