套娃式文件夹如何通过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读取注册表中值的方法
Apr 08 Python
python批量生成本地ip地址的方法
Mar 23 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
使用SAE部署Python运行环境的教程
May 05 Python
Python中字符串的格式化方法小结
May 03 Python
利用python操作SQLite数据库及文件操作详解
Sep 22 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
python集合能干吗
Jul 19 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 Python
Python自动化实战之接口请求的实现
May 30 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
python集合常见运算案例解析
2019/10/17 Python
python字符串的拼接方法总结
2019/11/18 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
写自荐信的七个技巧
2013/10/15 职场文书
挂职自我鉴定
2014/02/26 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
大学社团活动总结
2014/04/26 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
学校食品安全实施方案
2014/06/14 职场文书
工程承包协议书范本
2014/09/29 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA