套娃式文件夹如何通过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的垃圾回收机制深入分析
Jul 16 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
创建pycharm的自定义python模板方法
May 23 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Django框架实现的分页demo示例
May 25 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
Django数据模型中on_delete使用详解
Nov 30 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
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
JS定时器实例
2013/04/17 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
BP神经网络原理及Python实现代码
2018/12/18 Python
Python根据成绩分析系统浅析
2019/02/11 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python流程控制常用工具详解
2020/02/24 Python
浅谈Python协程
2020/06/17 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
数字漫画:comiXology
2020/06/13 全球购物
什么是会话Bean
2015/05/14 面试题
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
2014年加油站工作总结
2014/12/04 职场文书
优秀党员申报材料
2014/12/18 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers