套娃式文件夹如何通过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多线程编程(四):使用Lock互斥锁
Apr 05 Python
Django实现图片文字同时提交的方法
May 26 Python
遗传算法之Python实现代码
Oct 10 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
python如何删除文件、目录
Jun 23 Python
提高python代码运行效率的一些建议
Sep 29 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 Python
python使用glob检索文件的操作
May 20 Python
Python Pandas 删除列操作
Mar 16 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
关于axios如何全局注册浅析
2018/01/14 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
Python代码的打包与发布详解
2014/07/30 Python
python基于queue和threading实现多线程下载实例
2014/10/08 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
linux 下selenium chrome使用详解
2020/04/02 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
本科毕业生自荐信
2014/06/02 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
走进科学观后感
2015/06/18 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
vue实现登陆页面开发实践
2022/05/30 Vue.js