套娃式文件夹如何通过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运行的17个时新手常见错误小结
Aug 07 Python
python类型强制转换long to int的代码
Feb 10 Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
详解Python字符串对象的实现
Dec 24 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
Python IO文件管理的具体使用
Mar 20 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
Mac下安装vue
2018/04/11 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
js实现div色块碰撞
2020/01/16 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
市场营销专业推荐信
2013/11/03 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
行政专员求职信范文
2014/05/03 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
学校教学管理制度
2015/08/06 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
九年级数学教学反思
2016/02/17 职场文书
OpenCV实现常见的四种图像几何变换
2022/04/01 Python