自动化数据均分助手

  • 0 这个软件是做什么的呢?
    • 软件设计初衷
    • 软件实现的功能
  • 1 遍历部分——DFS的Python实现
  • 2. 分配部分
  • 写在最后及完整代码和软件

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. 从编程小白到数据科学家,我只用了 6 个月的时间

    作者 | Kate Marie Lewis 译者| 弯月,责编 | 夕颜 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 最近,我辞职了,离开了努力学习和艰苦奋斗了 ...

  2. 在EXCEL下用VBA编程提高人事数据的管理效率

    一.概述 人力资源部承载着企业人员劳资.人事.培训.社保.档案及文件的大量数据信息,而且信息量随时间不断积累,不断地做阶段"积分"工作--汇总统计.存档,有时做"微分&q ...

  3. Linux串口编程 —— 发送的数据无法被接收,且被原封不动返回

    Linux串口编程--发送的数据无法被接收,且被原封不动返回 问题描述 使用 #include <fcntl.h> /*文件控制定义*/ #include <termios.h> ...

  4. linux 【完结篇】第六章 shell编程及自动化运维--三剑客

    linux 第六章 shell编程及自动化运维–三剑客 一.正则表达式 1.前言 名词解释: 正则表达式是一种字符模式,用于在查找过程中匹配指定的字符.在大多数程序里,正则表达式都被置于2个正斜杠之间 ...

  5. 【组队学习】【29期】1. 编程实践(数据可视化)

    1. 编程实践(数据可视化) 航路开辟者:杨剑砺.杨煜.耿远昊.李运佳.居凤霞 领航员:范佳慧 航海士:杨剑砺.伊雪.肖桐.李晴晴.蔡婧旎 基本信息 开源内容:https://github.com/d ...

  6. 改用C++生成自动化数据表

    改用C++生成自动化数据表 前面的文章中,我们讨论了使用一个基于.NET的第三方程序库来从程序中来生成数据表.在我看来,这整个思路是非常有用的,例如为显示测试结果.我经常会自己在博客中尝试各种像这样的 ...

  7. lisp 线性标注自动避让_自动化数据增强:实践、理论和新方向

    选自Stanford AI Lab Blog 作者:Sharon Y. Li 机器之心编译 参与:Panda 对当今需要大量数据的机器学习模型而言,数据增强是一种具有显著价值的技术--既可用于缓解数据 ...

  8. Hello, World!我的房车编程生活,已经 150 天了

    我的房车编程生活今天已经到了第 150 天.自今年 5 月离开柏林以来,我访问了 6 个国家,行程超过了 1.2 万公里,收集了 18 万瓦时(Wh)太阳能,并沿途遇到了许多有趣的人. 房车编程生活无 ...

  9. 编程php分析器,如何编程访问分析器数据

    如何编程访问分析器数据 大多数时候,分析器信息的访问和分析是基于 Web 的可视化的.当然,你也可以利用分析器服务提供的方法以编程方式检索分析信息. // ... $profiler is the ' ...

最新文章

  1. Jaspersoft Studio简介
  2. VTK:相互作用之SelectAVertex
  3. Uber要做「自动驾驶共享电动单车/滑板」,共享单车要怎么自动驾驶?
  4. The more...., the more.....
  5. Error starting ApplicationContext. To display the conditions report re-run your application with ‘de
  6. 【疑难杂症】Excel数值自定义显示万,并保留两位小数
  7. 火山视频在一键去水印网站上解析教程,火山视频去水印教程
  8. linux x86软件改arm,x86程序移植到arm上
  9. 二项分布、poisson分布、gamma分布一些关系的笔记
  10. 个人笔记:kali firefox安装hackbar插件
  11. Typora结合Git打造完美的个人云笔记本
  12. pbe服务器无限火力模式,LOL4月9日PBE更新:无限火力模式上线!
  13. 躺平减脂减重法补充篇——无需控制碳水摄入的有效方法,另推一种健康的运动和防止老年慢性病的方式...
  14. Springboot整合Websocket(推送消息通知)
  15. QQ浏览器彻底卸载方式
  16. 区块链技术正向积极乐观的智能前景发展
  17. webrtc 代码走读六
  18. jmeter 如何开展性能测试
  19. Java中一维数组的内存解析(浅显易懂,新手必看)
  20. 你从未听过的区块链骗局:一个隐藏在隐私币BTCP代码深处的阴谋

热门文章

  1. linux系统学习(二)
  2. Temple Run的终点
  3. hbase安装配置 整合到hadoop
  4. C语言作业——歌手比赛系统
  5. 麒麟处理器是基于arm的吗_直接采用ARM的CPU和GPU,那么麒麟芯片算自研吗?
  6. QtXlsx详细配置
  7. 27英寸显示器多大 长宽多少厘米
  8. 【Spring Security OAuth2笔记系列】- spring security - 图片验证码
  9. 论如何科学的看小本子
  10. 算法 —— 排序 —— 优先队列