如何通过Python批量处理套娃式文件夹
生活随笔
收集整理的這篇文章主要介紹了
如何通过Python批量处理套娃式文件夹
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【相關學習推薦:python教程】
前言
在我對項目組的一些訓練圖像進行預處理的時候,發現處理的圖像是分好了類,在文件夾里的文件夾里,套娃式存儲的,所以對我批處理,以及按原文件夾規則進行存儲的時候,就會造成很大困擾
但通過下面幾個函數的結合,幫我順利的完成了一系列的預處理。
一、用不膩的芷山庫
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)
效果:
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批量处理套娃式文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 3306端口无法访问怎么办
- 下一篇: 微信小程序商城系统为什么有这么多商家开发