国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

詳解python os.walk()方法的使用

瀏覽:4日期:2022-06-16 13:02:59
python os.walk()方法

os.walk方法是python中幫助我們高效管理文件、目錄的工具,在深度學(xué)習(xí)中數(shù)據(jù)整理應(yīng)用的很頻繁,如數(shù)據(jù)集的名稱格式化、將數(shù)據(jù)集的按一定比例劃分訓(xùn)練集train_set、測試集test_set。

1.導(dǎo)入文件(使用os.walk方法前需要導(dǎo)入以下包)

import osimport random # 后續(xù)用來將數(shù)據(jù)隨機(jī)打亂和生成確定隨機(jī)種子,保證每次生成的隨機(jī)數(shù)據(jù)一樣便于測試模型精準(zhǔn)度

2.os.walk()參數(shù)解釋

os.walk(top, topdown=True, οnerrοr=None, followlinks=False)(后兩個(gè)參數(shù)我?guī)缀鯖]用過)參數(shù)

--top 我們需要遍歷的文件夾的地址(最好使用絕對(duì)地址,相對(duì)地址有時(shí)會(huì)出現(xiàn)未知錯(cuò)誤)--topdown 該參數(shù)為True時(shí),會(huì)優(yōu)先遍歷top目錄,否則優(yōu)先遍歷top的子目錄(默認(rèn)值為 True)--onerror 需要一個(gè) callable 對(duì)象,當(dāng)walk需要異常時(shí)會(huì)調(diào)用--followlinks 如果為真,則會(huì)遍歷目錄下的快捷方式(linux 下是 symbolic link)實(shí)際所指的目錄(默認(rèn)關(guān)閉)

os.walk 的返回值是一個(gè)生成器(generator),也就是說我們可以用循環(huán)去不遍歷它,來獲得其內(nèi)容。每次遍歷的對(duì)象都是返回的是一個(gè)三元組(root,dirs,files)

--root 指的是當(dāng)前正在遍歷的這個(gè)文件夾的本身的地址--dirs 返回的是一個(gè)列表list,表中數(shù)據(jù)是該文件夾中所有的目錄的名稱(但不包括子目錄名稱)--files 返回的也是一個(gè)列表list , 表中數(shù)據(jù)是該文件夾中所有的文件名稱(但不包括子目錄名稱)

3.用于測試文件夾組織結(jié)構(gòu)

詳解python os.walk()方法的使用4.

廢話不說,看測試?yán)?/p>

4.1 os.walk(top, topdown=True)時(shí)打印返回的 root,dirs,files,順便測試下topdown為真和假時(shí)的遍歷順序的區(qū)別。(這里就不展示運(yùn)行后的結(jié)果了,代碼拿走直接就可運(yùn)行)

# topdown=True(該參數(shù)默認(rèn)為真)def _get_img_info(): #測試時(shí)將data_dir 換為自己的目標(biāo)文件夾即可 data_dir = r’C:UsersfutiangeDesktopZero to Heroexpression_testraw_data’ for root,dirs,files in os.walk(data_dir,topdown=True):print(’root={}’.format(root))print(’dirs={}’.format(dirs))print(’files={}’.format(files))if __name__ == ’__main__’: _get_img_info()# topdown=False(該參數(shù)默認(rèn)為假) def _get_img_info(): data_dir = r’C:UsersfutiangeDesktopZero to Heroexpression_testraw_data’ for root,dirs,files in os.walk(data_dir,topdown=False):print(’root={}’.format(root))print(’dirs={}’.format(dirs))print(’files={}’.format(files))if __name__ == ’__main__’: _get_img_info()

4.2 使用案例

在深度學(xué)習(xí)中遍歷數(shù)據(jù)集時(shí),我們可以對(duì)數(shù)據(jù)集劃分,這里按train :test = 9 : 1劃分。

import osimport random # 后續(xù)用來將數(shù)據(jù)隨機(jī)打亂和生成確定隨機(jī)種子,保證每次生成的隨機(jī)數(shù)據(jù)一樣便于測試模型精準(zhǔn)度def _get_img_info(rng_seed,split_n,mode): image_path_list = [] #用來存放圖片的路徑 label_path_list = [] #用來存放圖片對(duì)應(yīng)的標(biāo)簽 data_dir = r’C:UsersfutiangeDesktopZero to Heroexpression_testraw_data’ for root,dirs,files in os.walk(data_dir):for file in files: path_file = os.path.join(root,file) print(path_file) if path_file.endswith('.jpg'): #判斷該路徑下文件是不是以.jpg結(jié)尾#print(os.path.basename(root)) #輸出圖片路徑#print(os.path.basename(root)[0]) #輸出該圖片所在的文件夾的第一個(gè)字符,我這里文件夾的第一個(gè)字符就是圖片的標(biāo)簽,測試時(shí)可以根據(jù)自己的文件夾名稱更改#print(int(os.path.basename(root)[0]))image_path_list.append(path_file) #將圖片路徑加入列表label_path_list.append(os.path.basename(root)[0]) #根據(jù)文件夾名稱確定標(biāo)簽,并加入列表 data_info = [[n,l] for n,l in zip(image_path_list,label_path_list)] #將圖片路徑-標(biāo)簽 關(guān)聯(lián)起來 random.seed(rng_seed) # 該方法中傳入?yún)?shù),確保每次生成的種子都是一樣的 random.shuffle(data_info) #上一行代碼生成的種子是確定的,保證了每次將列表元素打亂后的結(jié)果一樣,便于測試模型性能 split_idx = int(len(data_info) * split_n) # data_len * 0.9 # split_n代表數(shù)據(jù)集劃分的比例 if mode == ’train’:img_set = data_info[:split_idx] elif mode == ’val’:img_set = data_info[split_idx:] else:raise Exception('mode 無法識(shí)別,僅支持(train,valid)') return img_set #返回隨機(jī)打亂后的數(shù)據(jù)集,后續(xù)在對(duì)其進(jìn)行格式化即可將數(shù)據(jù)集加載進(jìn)模型測試if __name__ == ’__main__’: _get_img_info(1,0.9,’train’)

到此這篇關(guān)于詳解python os.walk()方法的使用的文章就介紹到這了,更多相關(guān)python os.walk()方法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 红安县| 新平| 清丰县| 吉隆县| 安溪县| 湄潭县| 凤冈县| 益阳市| 潍坊市| 浪卡子县| 张家口市| 甘肃省| 如东县| 嘉祥县| 康平县| 定结县| 辽宁省| 额济纳旗| 鸡泽县| 大洼县| 江永县| 邵东县| 武清区| 房产| 扎赉特旗| 义乌市| 虞城县| 盐城市| 江口县| 闵行区| 工布江达县| 微博| 康定县| 福建省| 康马县| 深水埗区| 资兴市| 修水县| 石泉县| 张北县| 竹北市|