【编程生活】自动化数据均分助手

本文介绍了一款基于Python的自动化数据均分软件,旨在解决深度学习数据分组和分发的问题。该软件使用深度优先搜索算法遍历文件夹,收集特定格式的数据,并按需分配到指定数量的组中。作者强调了Python在实现这一功能时的简洁性和高效性,同时表达了对学习Web开发以改善GUI体验的兴趣。
摘要由CSDN通过智能技术生成

0 这个软件是做什么的呢?

软件设计初衷

如题,这个软件的功效就是自动化的数据均分。熟悉我的朋友应该知道,我是一个深度学习方向的本科炼丹新手,经常需要对一个大的数据进行分组然后下放到科研组的学弟学妹那里进行标注。这个过程是非常无趣的而且还会浪费大量的时间。虽然说写一个脚本去分数据并不难但是随便写一个然后不知道扔到哪了下一次又遇到又要写毕竟是非常无聊的过程,并且我科研小组内并非负责编程部分的前辈们也不一定具备这样的能力。因此,我决定直接写一个成型的GUI软件,来完成这个自动化过程。

本代码所需第三方依赖:wxpython

软件实现的功能

  1. 对一个数据文件夹下的所有文件夹进行遍历,并将特定格式的数据全部取出并分配。
  2. 实现对特定组数的分配。

1 遍历部分——DFS的Python实现

上级的老师或者前辈给我们下发数据的时候通常是未经处理的,一个文件夹中又有多个分级文件夹的状况。这个其实很好理解,毕竟在进炼丹炉之前数据分类分批存储是非常自然的事情。然而,在我们分发数据的时候,这些数据很有可能是并没有本质区别的,过多的分级只会让我们的效率变低。因此,我们需要将文件夹下的所有特定格式文件全部整理出来一次性分配完成。
这个工作其实就是一个非常简单的数据结构DFS算法。我在这里用了一个非常粗糙的实现方式,即代码中的 dfsDataGetter 函数。

    def dfsDataGetter(self,path):
        dirFiles = os.listdir(path)
        for name in dirFiles:
            fullPath = "{}/{}".format(path,name)
            if(os.path.isdir(fullPath)):
                self.dfsDataGetter(fullPath)
            else:
                if(name.split('.')[-1] in self.dataType):
                    self.dataGroup.append(fullPath)

2. 分配部分

通过第一步,我们已经准备好了数据并同意储存在了一个数组中,那么接下来就是将它分配进入各个组中了!
毫无疑问,这一步如果要用其他的语言实现那需要一点运算(比如算出余数然后整除分配再加,等等,当然也可能只是我见识少没意识到不需要如此)。但是既然我们选择了python,自然就要用点特色啦~
这里我直接运用了一些很基础的切片加for in,即代码中的dataDispen函数

    def dataDispen(self, groupNum, groupNameSet):
        for num in range(groupNum):
            groupName = "{}{}".format(groupNameSet,num+1)
            self.groupDict[groupName] = self.dataGroup[num::groupNum]

不得不说python真的非常优雅且干练啊:)

接下来就是将这个Dict中的每一张图片复制到目标文件夹啦~相信这一部分难不倒各位大神!

写在最后及完整代码和软件

python真的非常实用,但是要用来做GUI确实是有点点小烦恼啊= =,尤其是wxpython用起来其实并不开心qwq
所以接下来的工作就得是好好学习一下web了!这样才能最好利用python的强大功能做出美丽的程序!
完整代码和已经打包好的可执行软件点击此处

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值