1. 程式人生 > 實用技巧 >python實現從一個資料夾下隨機抽取一定數量的圖片並移動到另一個資料夾

python實現從一個資料夾下隨機抽取一定數量的圖片並移動到另一個資料夾

由於製作訓練集和驗證集、測試集的需要,我需要從原始資料集中,隨機取出(剪下)一定數量的圖片。手動挑選畢竟不能保證隨機性,且費時費力。故參考了這位博主的方法。

 1 ##深度學習過程中,需要製作訓練集和驗證集、測試集。
 2 
 3 import os, random, shutil
 4 def moveFile(fileDir):
 5         pathDir = os.listdir(fileDir)    #取圖片的原始路徑
 6         filenumber=len(pathDir)
 7         rate=0.1    #自定義抽取圖片的比例,比方說100張抽10張,那就是0.1
8 picknumber=int(filenumber*rate) #按照rate比例從資料夾中取一定數量圖片 9 sample = random.sample(pathDir, picknumber) #隨機選取picknumber數量的樣本圖片 10 print (sample) 11 for name in sample: 12 shutil.move(fileDir+name, tarDir+name) 13 return 14 15 if __name__ == '
__main__': 16 fileDir = "./source/" #源圖片資料夾路徑 17 tarDir = './result/' #移動到新的資料夾路徑 18 moveFile(fileDir)

如果是要複製檔案可參考以下完整程式碼

 1 import os, random, shutil
 2 def copyFile(fileDir):
 3         pathDir = os.listdir(fileDir)    #取圖片的原始路徑
 4         filenumber=len(pathDir)
 5         rate=0.01    #
自定義抽取圖片的比例,比方說100張抽10張,那就是0.1 6 picknumber=int(filenumber*rate) #按照rate比例從資料夾中取一定數量圖片 7 sample = random.sample(pathDir, picknumber) #隨機選取picknumber數量的樣本圖片 8 print (sample) 9 for name in sample: 10 shutil.copy(fileDir+name, tarDir+name) 11 return 12 13 if __name__ == '__main__': 14 fileDir = "./source/" #源圖片資料夾路徑 15 tarDir = './result/' #移動到新的資料夾路徑 16 copyFile(fileDir)