Python文件遍歷os.walk()與os.listdir()使用及說(shuō)明
Python文件遍歷os.walk()與os.listdir()
在圖片處理過(guò)程中,樣本數(shù)據(jù)的組織是個(gè)常見(jiàn)的問(wèn)題,樣本組織好了,后面數(shù)據(jù)轉(zhuǎn)換、讀取等都能得心應(yīng)手。
在這里講一下我在準(zhǔn)備樣本時(shí)的一些心得
首先是os.walk()函數(shù)
os.walk(path)返回三個(gè)值:
parentdirnamesfilenames
分別表示path的路徑、path路徑下的文件夾的名字和path路徑下文件夾以外的其他文件;
我用下面的代碼來(lái)對(duì)樣本圖片建立標(biāo)簽:

不過(guò)不知walk到底是怎么遍歷的,我生成的標(biāo)簽順序亂了

所以這就想到用listdir來(lái)重新做標(biāo)簽:
os.listdir(path)返回一個(gè)包含path路徑下所有文件的列表

我用下面的方法來(lái)建立標(biāo)簽:

不過(guò)還是之前一樣的亂序,最后采用sort():

先獲取文件夾下圖片文件的名字列表list,再對(duì)圖片的序號(hào)進(jìn)行排序,將排序好的文件名列表逐一寫入txt中
os.walk和os.listdir遍歷目錄比較
假設(shè)存在下面的目錄和文件結(jié)構(gòu):
/a ----> /b ----> 1.py,2.py
----> /c ----> 3.py , 4.py
----> 5.py
----> 6.py
os.walk()
運(yùn)行下面的測(cè)試代碼
import os
for root, dirs, files in os.walk('../a'): ?# 指向當(dāng)前的測(cè)試文件夾
? ? print(root)
? ? print(dirs)
? ? print(files)輸出結(jié)果,我們解析一下輸出結(jié)果
../a # 當(dāng)前遍歷的根目錄
['b', 'c'] # 根目錄下的兩個(gè)子目錄b,c
['5.py', '6.py'] # 根目錄下的兩個(gè)子文件
../a\b # 遍歷根目錄下的子目錄b
[] # 子目錄b中的子目錄
['1.py', '2.py'] # 子目錄b中的文件
../a\c # 遍歷根目錄下的子目錄c
[] # 子目錄c中的子目錄
['3.py', '4.py'] # 子目錄c中的文件
os.listdir()
運(yùn)行如下測(cè)試代碼
for f in os.listdir('../a'):
? ? print(f)輸出結(jié)果
5.py
6.py
b
c
兩種方法比較
os.walk將當(dāng)前目錄下的所有子目錄及其中的內(nèi)容,都會(huì)遍歷到;而os.listdir只會(huì)遍歷當(dāng)前目錄中所包含的內(nèi)容。當(dāng)存在如下的目錄級(jí)別時(shí)
/a ----> /b ------> b1.txt b2.txt
----> /c ------> c1.txt c2.txt
----> /d ------> d1.txt d2.txt
當(dāng)我們想要將所有的txt文件提取出來(lái),此時(shí)使用os.walk是最好的選擇,直接將files遍歷即可,因?yàn)閒iles在其父目錄成為根目錄時(shí),會(huì)將當(dāng)前文件夾中的所有files遍歷出來(lái),即:
import os?
for root, dirs, files in os.walk('./a'):
? ? for file in files:
? ? ? ? print(file)#運(yùn)行結(jié)果
b1.txt
b2.txt
c1.txt
c2.txt
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python關(guān)于os.walk函數(shù)查找windows文件方式
- Python os.listdir與os.walk實(shí)現(xiàn)獲取路徑詳解
- python?中?os.walk()?函數(shù)詳解
- 詳解python os.walk()方法的使用
- Python使用os.listdir和os.walk獲取文件路徑
- Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法
- python 獲取文件下所有文件或目錄os.walk()的實(shí)例
- python使用os.listdir和os.walk獲得文件的路徑的方法
- python使用os模塊的os.walk遍歷文件夾示例
- Python中os.walk用法使用小結(jié)
相關(guān)文章
使用Keras實(shí)現(xiàn)Tensor的相乘和相加代碼
這篇文章主要介紹了使用Keras實(shí)現(xiàn)Tensor的相乘和相加代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
利用Python實(shí)現(xiàn)自動(dòng)化監(jiān)控文件夾完成服務(wù)部署
本篇文章將為大家詳細(xì)介紹如何利用Python語(yǔ)言實(shí)現(xiàn)監(jiān)控文件夾,以此輔助完成服務(wù)的部署動(dòng)作,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下2022-07-07
解決Django中checkbox復(fù)選框的傳值問(wèn)題
這篇文章主要介紹了解決Django中checkbox復(fù)選框的傳值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
python中三種輸出格式總結(jié)(%,format,f-string)
在Python語(yǔ)言編程中,我們會(huì)與字符串打交道,那務(wù)必會(huì)輸出字符串來(lái)查看字符串的內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于python中三種輸出格式的相關(guān)資料,三種格式分別是%,format,f-string,需要的朋友可以參考下2022-03-03
Python開(kāi)源庫(kù)?Streamlit?應(yīng)用案例
Streamlit是一個(gè)開(kāi)源Python框架,專為數(shù)據(jù)科學(xué)家和工程師設(shè)計(jì),可快速構(gòu)建交互式Web應(yīng)用,無(wú)需前端開(kāi)發(fā)知識(shí),支持?jǐn)?shù)據(jù)可視化、模型集成、文件上傳及多種部署方式,簡(jiǎn)化了數(shù)據(jù)驅(qū)動(dòng)項(xiàng)目開(kāi)發(fā)流程,本文給大家介紹Python開(kāi)源庫(kù)Streamlit應(yīng)用案例,感興趣的朋友一起看看吧2025-09-09
使用pandas中的DataFrame.rolling方法查看時(shí)間序列中的異常值
Pandas是Python中最受歡迎的數(shù)據(jù)分析和處理庫(kù)之一,提供了許多強(qiáng)大且靈活的數(shù)據(jù)操作工具,在Pandas中,DataFrame.rolling方法是一個(gè)強(qiáng)大的工具,在本文中,我們將深入探討DataFrame.rolling方法的各種參數(shù)和示例,以幫助您更好地理解和應(yīng)用這個(gè)功能2023-12-12

