套娃式資料夾如何通過Python批量處理
阿新 • • 發佈:2020-08-25
前言
在我對專案組的一些訓練影象進行預處理的時候,發現處理的影象是分好了類,在資料夾裡的資料夾裡,套娃式儲存的,所以對我批處理,以及按原資料夾規則進行儲存的時候,就會造成很大困擾
但通過下面幾個函式的結合,幫我順利的完成了一系列的預處理。
一、用不膩的芷山庫
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函式是將資料夾裡面的所有檔案路徑調出來,不管中間有無子資料夾
二、其他函式
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批量處理的文章就介紹到這了,更多相關Python 批量處理檔案內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!