时间:2021-05-22
前言
在我对项目组的一些训练图像进行预处理的时候,发现处理的图像是分好了类,在文件夹里的文件夹里,套娃式存储的,所以对我批处理,以及按原文件夹规则进行存储的时候,就会造成很大困扰
但通过下面几个函数的结合,帮我顺利的完成了一系列的预处理。
一、用不腻的芷山库
1.安装库
pip安装:
pip install zisan2.getFiles函数
函数调用:
import zisan.FileTools as zffile_path = 'C:/Users/xxx/Desktop/2016/Annotations'whole_file = zf.getFiles(file_path)图片存储在 :件夹2016 -> 文件夹Annotations ->子文件夹 -> 00000.png
通过getFiles函数,可以将Annotations中的所有文件夹里的所有图片路径调出来
也就是说,getFiles函数是将文件夹里面的所有文件路径调出来,不管中间有无子文件夹
二、其他函数
1.os.listdir函数
该函数调用后会返回路径底下文件夹的名称,以字符串的形式储存在列表里
代码如下:
import osfile_path = 'C:/Users/xxx/Desktop/2016/Annotations'file_names = os.listdir(file_path)print(file_names)效果:
2.os.mkdir函数
代码:
import osnew_file_path = 'C:/Users/xxx/Destop/2016/newfile'os.mkdir(new_file_path)用于创建新文件夹
三、运用
要求:处理Annotations文件夹中的每个子文件夹中的图片,并按原本的规则存储在newfile新文件夹里的相应位置,命名规则如00000.jpg
import zisan.FileTools as zfimport osimport cv2from skimage import iofile_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 批量处理文件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
程序可以实现文件夹的批量压缩功能和对压缩包进行处理的功能。1。批量压缩文件夹。选择文件夹和附加文件,进行相关的设置,可以进行文件夹压缩。并可以根据需要加锁和加密
本文实例为大家分享了python批量处理文件或文件夹的具体代码,供大家参考,具体内容如下#-*-coding:utf-8-*-importos,shutilim
本文通过实例为大家分享了python实现批量移动文件的具体代码,供大家参考,具体内容如下任务:每个大文件夹下有许多小文件夹,将小文件夹里的pdf文件移动到指定文
Python批量替换文件内容,支持嵌套文件夹importospath="./"forroot,dirs,filesinos.walk(path):forname
批处理之ren命令-可批量修改文件名1.批处理批量修改文件后缀名(假设我需要把一个文件夹中的很多txt文件改为sql文件):1)在需要被处理的文件的文件夹里先新