套娃式文件夾如何通過Python批量處理
前言
在我對(duì)項(xiàng)目組的一些訓(xùn)練圖像進(jìn)行預(yù)處理的時(shí)候,發(fā)現(xiàn)處理的圖像是分好了類,在文件夾里的文件夾里,套娃式存儲(chǔ)的,所以對(duì)我批處理,以及按原文件夾規(guī)則進(jìn)行存儲(chǔ)的時(shí)候,就會(huì)造成很大困擾
但通過下面幾個(gè)函數(shù)的結(jié)合,幫我順利的完成了一系列的預(yù)處理。
一、用不膩的芷山庫
1.安裝庫
pip安裝:
pip install zisan
2.getFiles函數(shù)
函數(shù)調(diào)用:
import zisan.FileTools as zf file_path = 'C:/Users/xxx/Desktop/2016/Annotations' whole_file = zf.getFiles(file_path)
圖片存儲(chǔ)在 :件夾2016 -> 文件夾Annotations ->子文件夾 -> 00000.png
通過getFiles函數(shù),可以將Annotations中的所有文件夾里的所有圖片路徑調(diào)出來
也就是說,getFiles函數(shù)是將文件夾里面的所有文件路徑調(diào)出來,不管中間有無子文件夾
二、其他函數(shù)
1.os.listdir函數(shù)
該函數(shù)調(diào)用后會(huì)返回路徑底下文件夾的名稱,以字符串的形式儲(chǔ)存在列表里
代碼如下:
import os file_path = 'C:/Users/xxx/Desktop/2016/Annotations' file_names = os.listdir(file_path) print(file_names)
效果:


2.os.mkdir函數(shù)
代碼:
import os new_file_path = 'C:/Users/xxx/Destop/2016/newfile' os.mkdir(new_file_path)
用于創(chuàng)建新文件夾
三、運(yùn)用
要求:處理Annotations文件夾中的每個(gè)子文件夾中的圖片,并按原本的規(guī)則存儲(chǔ)在newfile新文件夾里的相應(yīng)位置,命名規(guī)則如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: #遍歷每個(gè)子文件夾名稱
Index = 0
file_name = file_path + '/' + i #巧妙運(yùn)用+號(hào)得到改子文件夾的路徑
os.mkdir(new_file_path + '/' + i) #在newfile里創(chuàng)建一個(gè)與子文件夾名稱相同的文件夾
whole_pic = zf.getFiles(file_name) #用getFiles函數(shù)讀取子文件夾內(nèi)的圖片路徑
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形式存儲(chǔ)
Index += 1
這就是我解決文件夾處理問題的基本思路和流程,各個(gè)函數(shù)可以搭配使用,放入循環(huán)外或內(nèi)根據(jù)具體要求都有著不同的效果。
到此這篇關(guān)于套娃式文件夾如何通過Python批量處理的文章就介紹到這了,更多相關(guān)Python 批量處理文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python split() 函數(shù)拆分字符串將字符串轉(zhuǎn)化為列的方法
今天小編就為大家分享一篇Python split() 函數(shù)拆分字符串將字符串轉(zhuǎn)化為列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
FFT快速傅里葉變換的python實(shí)現(xiàn)過程解析
這篇文章主要介紹了FFT快速傅里葉變換的python實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Python自然語言處理使用spaCy庫進(jìn)行文本預(yù)處理
這篇文章主要為大家介紹了Python自然語言處理使用spaCy庫進(jìn)行文本預(yù)處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

