問(wèn)題提出:
無(wú)論是在為了跑深度學(xué)習(xí)模型而準(zhǔn)備數(shù)據(jù)集,還是其他的一些用途,相信大家都會(huì)遇到一個(gè)問(wèn)題:我所需要的圖片分布在很多不同的文件夾下,但我不需要這么多文件夾,那么我如果要使用這些圖片的話,就需要把這些文件夾下的圖片一個(gè)個(gè)提取出來(lái),然后再放到新建的文件夾下,有時(shí)如果文件夾下的圖片是按照順序命名的,比如001.jpg......089.jpg等等,那么將他們放到一個(gè)文件夾下還面臨文件名重復(fù)需要重命名的問(wèn)題。(比如我需要將deepfashion2數(shù)據(jù)集的圖片提取一部分放到我的文件夾下,就面臨以上問(wèn)題)
那如何將這些圖片批量提取并重新放到新的文件夾下呢?
解決方法:
1.首先,需要先新建一個(gè)文件夾,存放我們的n個(gè)小文件夾:
?比如我新建一個(gè)zhao-sweater,里面是我需要提取照片的子文件夾
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-521122.html
?2.之后我再創(chuàng)建一個(gè)Top文件夾,用來(lái)存放我提取之后的照片,
?3.運(yùn)行代碼:
import os
import re
import shutil,random
def get_allfile(path): # 獲取所有文件
all_file = []
for f in os.listdir(path): # listdir返回文件中所有目錄
f_name = os.path.join(path, f)
all_file.append(f_name)
return all_file
def moveFile(fileDir, tarDir):
pathDir = os.listdir(fileDir) # 取圖片的原始路徑
for name in pathDir:
s=fileDir.split('D://桌面//zhao-sweater\\')[1]#要提取圖片的主文件夾
shutil.move(fileDir +"http://"+name, tarDir+"http://"+s+"_"+name)
def read_directory(train_save_path,val_path,fw,fw1):
train_fileslist = os.listdir(train_save_path)
val_fileslist=os.listdir(val_path)
train_sort_num_list = []
val_sort_num_list = []
for file in train_fileslist:
if file.__contains__("jpg"):
train_sort_num_list.append(int(file.split('Datacluster Fire and Smoke Sample (')[1].split(').jpg')[0])) # 去掉前面的字符串和下劃線以及后綴,只留下數(shù)字并轉(zhuǎn)換為整數(shù)方便后面排序
train_sort_num_list.sort() # 然后再重新排序
for file in val_fileslist:
if file.__contains__("jpg"):
val_sort_num_list.append(int(file.split('Datacluster Fire and Smoke Sample (')[1].split(').jpg')[0])) # 去掉前面的字符串和下劃線以及后綴,只留下數(shù)字并轉(zhuǎn)換為整數(shù)方便后面排序
val_sort_num_list.sort() # 然后再重新排序
i=0
j=0
for filename in os.listdir(train_save_path):
if filename.__contains__("jpg"):
fw.write(train_save_path+"http://"+"Datacluster Fire and Smoke Sample ("+str(train_sort_num_list[i])+")"+'\n')
i=i+1;
for filename in os.listdir(val_path):
if filename.__contains__("jpg"):
fw1.write(val_path + "http://"+"Datacluster Fire and Smoke Sample ("+str(val_sort_num_list[j])+")" + '\n')
j=j+1
if __name__ == '__main__':
train_path = "D://桌面//zhao-sweater"
all_file = get_allfile(train_path) # tickets要獲取文件夾名
onetarDir="D://桌面//Top"#提取之后的文件存放位置
if not os.path.exists(onetarDir):
os.makedirs(onetarDir)
for i in all_file:
moveFile(i,onetarDir)
?
我們只需要更改三處位置:
s=fileDir.split('D://桌面//zhao-sweater\\')[1]#要提取圖片的主文件夾
train_path = "D://桌面//zhao-sweater"#還是主文件夾的路徑
onetarDir="D://桌面//Top"#提取之后的文件存放位置
?
4.提取成功!
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-521122.html
?
到了這里,關(guān)于如何批量提取不同文件夾下的圖片并隨機(jī)重命名的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!