套娃式文件夹如何通过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实现批量转换文件编码(批转换编码示例)
Jan 23 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
python中查看变量内存地址的方法
May 05 Python
python登录豆瓣并发帖的方法
Jul 08 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
pip安装tensorflow的坑的解决
Apr 19 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
详细总结Python常见的安全问题
May 21 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 HTML代码串截取代码
2008/12/29 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python之str操作方法(详解)
2017/06/19 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
Python中如何引入第三方模块
2020/05/27 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
服务员岗位职责
2014/01/29 职场文书
服务员岗位责任制
2014/02/11 职场文书
跳槽求职信范文
2014/05/26 职场文书
文明工地标语
2014/06/16 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
亮剑观后感
2015/06/05 职场文书
周末问候语大全
2015/11/10 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript