欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年06月18日 11:44:43   作者:林思少  
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞python os.walk()方法的使用展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下

python os.walk()方法

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

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

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

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

os.walk(top, topdown=True, οnerrοr=None, followlinks=False)(后兩個(gè)參數(shù)我?guī)缀鯖](méi)用過(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),也就是說(shuō)我們可以用循環(huán)去不遍歷它,來(lái)獲得其內(nèi)容。每次遍歷的對(duì)象都是返回的是一個(gè)三元組(root,dirs,files)

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

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

在這里插入圖片描述4.

廢話不說(shuō),看測(cè)試?yán)?/p>

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

# topdown=True(該參數(shù)默認(rèn)為真)
def _get_img_info(): 
	#測(cè)試時(shí)將data_dir 換為自己的目標(biāo)文件夾即可
    data_dir = r'C:\Users\futiange\Desktop\Zero to Hero\expression_test\raw_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:\Users\futiange\Desktop\Zero to Hero\expression_test\raw_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 os
import random # 后續(xù)用來(lái)將數(shù)據(jù)隨機(jī)打亂和生成確定隨機(jī)種子,保證每次生成的隨機(jī)數(shù)據(jù)一樣便于測(cè)試模型精準(zhǔn)度

def _get_img_info(rng_seed,split_n,mode):
    image_path_list = [] #用來(lái)存放圖片的路徑
    label_path_list = [] #用來(lái)存放圖片對(duì)應(yīng)的標(biāo)簽
    data_dir = r'C:\Users\futiange\Desktop\Zero to Hero\expression_test\raw_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)簽,測(cè)試時(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)起來(lái)
    random.seed(rng_seed) # 該方法中傳入?yún)?shù),確保每次生成的種子都是一樣的
    random.shuffle(data_info) #上一行代碼生成的種子是確定的,保證了每次將列表元素打亂后的結(jié)果一樣,便于測(cè)試模型性能
    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 無(wú)法識(shí)別,僅支持(train,valid)")
    return img_set #返回隨機(jī)打亂后的數(shù)據(jù)集,后續(xù)在對(duì)其進(jìn)行格式化即可將數(shù)據(jù)集加載進(jìn)模型測(cè)試
if __name__ == '__main__':
    _get_img_info(1,0.9,'train')

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

相關(guān)文章

  • Python類的繼承和多態(tài)代碼詳解

    Python類的繼承和多態(tài)代碼詳解

    這篇文章主要介紹了Python類的繼承和多態(tài)代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • python holidays獲取中國(guó)節(jié)日的示例

    python holidays獲取中國(guó)節(jié)日的示例

    在Python中,holidays庫(kù)是一個(gè)流行的庫(kù),用于處理各種國(guó)家和地區(qū)的公共假期,這篇文章主要介紹了python holidays獲取中國(guó)節(jié)日,需要的朋友可以參考下
    2024-06-06
  • 一文帶你深入了解Python中的數(shù)據(jù)清洗

    一文帶你深入了解Python中的數(shù)據(jù)清洗

    數(shù)據(jù)清洗一般包括:空值,異常值,重復(fù)值,類型轉(zhuǎn)換和數(shù)據(jù)整合這些操作,這篇文章將通過(guò)一些示例為大家詳細(xì)講講Python中數(shù)據(jù)清洗的操作的實(shí)現(xiàn),需要的可以參考一下
    2023-03-03
  • python面試題之read、readline和readlines的區(qū)別詳解

    python面試題之read、readline和readlines的區(qū)別詳解

    當(dāng)python進(jìn)行文件的讀取會(huì)遇到三個(gè)不同的函數(shù),它們分別是read(),readline(),和readlines(),下面這篇文章主要給大家介紹了關(guān)于python面試題之read、readline和readlines區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 三分鐘python搭建支付寶三方支付

    三分鐘python搭建支付寶三方支付

    本文主要介紹了三分鐘python搭建支付寶三方支付,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python3匿名函數(shù)lambda介紹與使用示例

    Python3匿名函數(shù)lambda介紹與使用示例

    這篇文章主要給大家介紹了關(guān)于Python3匿名函數(shù)lambda與使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python使用pyodbc連接sqlserver

    python使用pyodbc連接sqlserver

    本文主要介紹了python使用pyodbc連接sqlserver,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器

    python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器

    這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • pycharm創(chuàng)建并使用虛擬環(huán)境的詳細(xì)圖文教程

    pycharm創(chuàng)建并使用虛擬環(huán)境的詳細(xì)圖文教程

    Python的虛擬環(huán)境是正常的現(xiàn)實(shí)環(huán)境相對(duì)應(yīng)的,在虛擬環(huán)境中安裝的包是與現(xiàn)實(shí)環(huán)境隔離的,下面這篇文章主要給大家介紹了關(guān)于pycharm創(chuàng)建并使用虛擬環(huán)境的詳細(xì)圖文教程,需要的朋友可以參考下
    2022-08-08
  • opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)

    opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)

    這篇文章主要介紹了opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論