套娃式文件夹如何通过Python批量处理


Posted in Python onAugust 23, 2020

前言

在我对项目组的一些训练图像进行预处理的时候,发现处理的图像是分好了类,在文件夹里的文件夹里,套娃式存储的,所以对我批处理,以及按原文件夹规则进行存储的时候,就会造成很大困扰
但通过下面几个函数的结合,帮我顺利的完成了一系列的预处理。

一、用不腻的芷山库

1.安装库

pip安装:

pip install zisan

2.getFiles函数

函数调用:

import zisan.FileTools as zf
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
whole_file = zf.getFiles(file_path)

图片存储在 :件夹2016 -> 文件夹Annotations ->子文件夹 -> 00000.png
通过getFiles函数,可以将Annotations中的所有文件夹里的所有图片路径调出来

也就是说,getFiles函数是将文件夹里面的所有文件路径调出来,不管中间有无子文件夹

二、其他函数

1.os.listdir函数

该函数调用后会返回路径底下文件夹的名称,以字符串的形式储存在列表里

代码如下:

import os
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
file_names = os.listdir(file_path)
print(file_names)

效果:

套娃式文件夹如何通过Python批量处理

套娃式文件夹如何通过Python批量处理

2.os.mkdir函数

代码:

import os
new_file_path = 'C:/Users/xxx/Destop/2016/newfile'
os.mkdir(new_file_path)

用于创建新文件夹

三、运用

要求:处理Annotations文件夹中的每个子文件夹中的图片,并按原本的规则存储在newfile新文件夹里的相应位置,命名规则如00000.jpg

import zisan.FileTools as zf
import os
import cv2
from skimage import io

file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
new_file_path = 'C:/Users/xxx/Destop/2016/newfile'

file_names = os.listdir(file_path)
#获取Annotations文件夹的子文件夹名称

for i in file_names: #遍历每个子文件夹名称
  Index = 0
  file_name = file_path + '/' + i #巧妙运用+号得到改子文件夹的路径
  os.mkdir(new_file_path + '/' + i) #在newfile里创建一个与子文件夹名称相同的文件夹
  whole_pic = zf.getFiles(file_name) #用getFiles函数读取子文件夹内的图片路径
  for f in whole_pic:
    msk = io.imread(f)
		msk=cv2.cvtColor(msk,cv2.COLOR_RGBA2GRAY)
    msk[np.where(msk!=0)]=255
    io.imsave(new_file_path + '/' + i + '/' + str("%05d" % Index) + '.jpg' , msk)
     #处理命名可直接+'.jpg'让其以jepg形式存储
    Index += 1

这就是我解决文件夹处理问题的基本思路和流程,各个函数可以搭配使用,放入循环外或内根据具体要求都有着不同的效果。

到此这篇关于套娃式文件夹如何通过Python批量处理的文章就介绍到这了,更多相关Python 批量处理文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现bitmap数据结构详解
Feb 17 Python
pycharm 使用心得(二)设置字体大小
Jun 05 Python
Python 模块EasyGui详细介绍
Feb 19 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
详解Python文件修改的两种方式
Aug 22 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
这样写python注释让代码更加的优雅
Jun 02 Python
python四种出行路线规划的实现
Jun 23 Python
python进度条显示-tqmd模块的实现示例
Aug 23 #Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 #Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 #Python
python进度条显示之tqmd模块
Aug 22 #Python
python 常见的排序算法实现汇总
Aug 21 #Python
Python制作数据预测集成工具(值得收藏)
Aug 21 #Python
简述 Python 的类和对象
Aug 21 #Python
You might like
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
PHP4.04简明安装
2006/10/09 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
Ajax基础知识详解
2017/02/17 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
10个Python小技巧你值得拥有
2018/09/29 Python
Python闭包思想与用法浅析
2018/12/27 Python
python解释器spython使用及原理解析
2019/08/24 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
编程输出如下图形
2013/11/24 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
2014法制宣传日活动总结
2014/07/09 职场文书
会计学专业求职信
2014/07/17 职场文书
趣味运动会广播稿
2014/09/13 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
欠条样本
2015/07/03 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL