套娃式文件夹如何通过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获得图片base64编码示例
Jan 16 Python
Python爬取Coursera课程资源的详细过程
Nov 04 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
django admin后管定制-显示字段的实例
Mar 11 Python
python模拟斗地主发牌
Apr 22 Python
Django ORM filter() 的运用详解
May 14 Python
django rest framework使用django-filter用法
Jul 15 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php 移除数组重复元素的一点说明
2008/11/27 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
微信小程序版本自动更新的方法
2019/06/14 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
Python中的__SLOTS__属性使用示例
2015/02/18 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python 定义只读属性的实现方式
2020/03/05 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
珍惜时间演讲稿
2014/05/14 职场文书
政协调研汇报材料
2014/08/15 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
老兵退伍感言
2015/08/03 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers