套娃式文件夹如何通过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编写vim插件的简单示例
Apr 17 Python
Python文件及目录操作实例详解
Jun 04 Python
python编程培训 python培训靠谱吗
Jan 17 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
什么是Python变量作用域
Jun 03 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
利用Python实现斐波那契数列的方法实例
Jul 26 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读取MySQL数据代码
2008/06/05 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php提高网站效率的技巧
2015/09/29 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JS中==与===操作符的比较
2009/03/21 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
javascript 闭包详解
2015/02/15 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
JavaScript事件对象event用法分析
2018/07/27 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
汽车专业毕业生自荐信
2013/11/03 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
高中生毕业评语
2014/12/30 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL