套娃式文件夹如何通过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 paramiko实现ssh远程访问的方法
Dec 03 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
python3实现点餐系统
Jan 24 Python
Python日期时间Time模块实例详解
Apr 15 Python
12个步骤教你理解Python装饰器
Jul 01 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
基于pycharm实现批量修改变量名
Jun 02 Python
深入了解python列表(LIST)
Jun 08 Python
python 图像增强算法实现详解
Jan 24 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
python实现密码强度校验
2020/03/18 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
幼师自荐信范文
2013/10/06 职场文书
分公司负责人任命书
2014/06/04 职场文书
员工安全责任书范本
2014/07/24 职场文书
协会周年庆活动方案
2014/08/26 职场文书
社团活动总结格式
2014/08/29 职场文书
介绍信格式
2015/01/30 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记