优草派  >   Python

Python如何批量处理套娃式文件夹?超详细的方法来了!必学!

陈立鑫            来源:优草派

在小编进行对项目的一些训练图像预处理的时候,发现处理的图像是有好几类,分别放在很多层的文件夹里,就像套娃一样,所以对我批量处理会造成很大的困扰,但是通过小编新学的“几招”连招,帮我顺利的完成了一系列的预处理。

Python如何批量处理套娃式文件夹?超详细的方法来了!必学!

(一)安装库

pip安装:

pip install zisan

(二)getFiles函数

函数的调用:

import zisan.FileTools as zf
file_path = 'C:/Users/xxx/Desktop/2022/Annotations'
whole_file = zf.getFiles(file_path)

图片存储在 :文件夹2022-> 文件夹Annotations ->子文件夹 -> 00000.png
通过getFiles函数,可以将Annotations中的所有文件夹里的所有图片路径调出来

也就是说,getFiles函数是将文件夹里面的所有文件路径调出来,不管中间有无子文件夹

(1)os.listdir函数

该函数调用后会返回路径底下文件夹的名称,以字符串的形式储存在列表里

import os
file_path = 'C:/Users/xxx/Desktop/2022/Annotations'
file_names = os.listdir(file_path)
print(file_names)

(2)os.mkdir函数

import os
new_file_path = 'C:/Users/xxx/Destop/2022/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/2022/Annotations'
new_file_path = 'C:/Users/xxx/Destop/2022/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批量处理套娃式文件夹的一些方法了,小编在使用这个方法的时候觉得非常方便,如果大家学会的话一定要多加练习,把知识点牢固在心中。如果觉得小编的分享的方法不错的话,大家也可以多多支持和关注我们优草派官方,以便以后了解更多的知识。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行