Python文件遍歷os.walk()與os.listdir()使用及說明
Python文件遍歷os.walk()與os.listdir()
在圖片處理過程中,樣本數據的組織是個常見的問題,樣本組織好了,后面數據轉換、讀取等都能得心應手。
在這里講一下我在準備樣本時的一些心得
首先是os.walk()函數
os.walk(path)返回三個值:
parentdirnamesfilenames
分別表示path的路徑、path路徑下的文件夾的名字和path路徑下文件夾以外的其他文件;
我用下面的代碼來對樣本圖片建立標簽:

不過不知walk到底是怎么遍歷的,我生成的標簽順序亂了

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

我用下面的方法來建立標簽:

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

先獲取文件夾下圖片文件的名字列表list,再對圖片的序號進行排序,將排序好的文件名列表逐一寫入txt中
os.walk和os.listdir遍歷目錄比較
假設存在下面的目錄和文件結構:
/a ----> /b ----> 1.py,2.py
----> /c ----> 3.py , 4.py
----> 5.py
----> 6.py
os.walk()
運行下面的測試代碼
import os
for root, dirs, files in os.walk('../a'): ?# 指向當前的測試文件夾
? ? print(root)
? ? print(dirs)
? ? print(files)輸出結果,我們解析一下輸出結果
../a # 當前遍歷的根目錄
['b', 'c'] # 根目錄下的兩個子目錄b,c
['5.py', '6.py'] # 根目錄下的兩個子文件
../a\b # 遍歷根目錄下的子目錄b
[] # 子目錄b中的子目錄
['1.py', '2.py'] # 子目錄b中的文件
../a\c # 遍歷根目錄下的子目錄c
[] # 子目錄c中的子目錄
['3.py', '4.py'] # 子目錄c中的文件
os.listdir()
運行如下測試代碼
for f in os.listdir('../a'):
? ? print(f)輸出結果
5.py
6.py
b
c
兩種方法比較
os.walk將當前目錄下的所有子目錄及其中的內容,都會遍歷到;而os.listdir只會遍歷當前目錄中所包含的內容。當存在如下的目錄級別時
/a ----> /b ------> b1.txt b2.txt
----> /c ------> c1.txt c2.txt
----> /d ------> d1.txt d2.txt
當我們想要將所有的txt文件提取出來,此時使用os.walk是最好的選擇,直接將files遍歷即可,因為files在其父目錄成為根目錄時,會將當前文件夾中的所有files遍歷出來,即:
import os?
for root, dirs, files in os.walk('./a'):
? ? for file in files:
? ? ? ? print(file)#運行結果
b1.txt
b2.txt
c1.txt
c2.txt
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
從零開始學習Python與BeautifulSoup網頁數據抓取
想要從零開始學習Python和BeautifulSoup網頁數據抓取?本指南將為你提供簡單易懂的指導,讓你掌握這兩個強大的工具,不管你是初學者還是有經驗的開發(fā)者,本指南都能幫助你快速入門并提升技能,不要錯過這個機會,開始你的編程之旅吧!2024-01-01
淺談python socket函數中,send與sendall的區(qū)別與使用方法
下面小編就為大家?guī)硪黄獪\談python socket函數中,send與sendall的區(qū)別與使用方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Python+Tensorflow+CNN實現車牌識別的示例代碼
這篇文章主要介紹了Python+Tensorflow+CNN實現車牌識別的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10

