Python遍歷某目錄下的所有文件夾與文件路徑
本文與《【Java】讀取其下所有文件夾與文件的路徑》 (點(diǎn)擊打開鏈接)為姊妹篇,主要講述Python對于文件信息的讀取操作。
Python對于文件信息的讀取操作,在其固有類os中。
下面以讀取F盤下的所有文件夾作為例子說明這個(gè)問題:

Python對于文件夾的遍歷有兩種寫法,一種是直接利用其封裝好的walk方法直接操作。
這是Python做得比Java優(yōu)勢的地方:
# -*-coding:utf-8-*-
import os
for root,dirs,files in os.walk("f:\\"):
for dir in dirs:
print os.path.join(root,dir).decode('gbk').encode('utf-8');
for file in files:
print os.path.join(root,file).decode('gbk').encode('utf-8');
運(yùn)行效果如下:

上述程序,將os.walk讀取到的所有路徑root、目錄名dirs與文件名files,也就是三個(gè)文件數(shù)組利用foreach循環(huán)輸出。
join方法就是講其路徑與目錄名或者文件名連接起來,組成一個(gè)完整的目錄。
后面的.decode('gbk').encode('utf-8');方法主要是給Eclipse下的PyDev控制臺用的,如果不加控制臺的輸出會出現(xiàn)亂碼,但是,如果你的Python程序是要拉到Windows的控制臺cmd,使用python xx.py運(yùn)行的話,請不要加這段編碼方法,同時(shí)去掉開頭的# -*-coding:utf-8-*-。因?yàn)閏md是使用gb2312簡體中文編碼的,而不是像Linux的終端是utf-8編碼。
也可以根據(jù)Java的遞歸思想,寫成以下的形式:
# -*-coding:utf-8-*-
import os;
files = list();
def DirAll(pathName):
if os.path.exists(pathName):
fileList = os.listdir(pathName);
for f in fileList:
if f=="$RECYCLE.BIN" or f=="System Volume Information":
continue;
f=os.path.join(pathName,f);
if os.path.isdir(f):
DirAll(f);
else:
dirName=os.path.dirname(f);
baseName=os.path.basename(f);
if dirName.endswith(os.sep):
files.append(dirName+baseName);
else:
files.append(dirName+os.sep+baseName);
DirAll("f:\\");
for f in files:
print f.decode('gbk').encode('utf-8');
運(yùn)行效果如下:

當(dāng)然,這種形式有其弊端,就是不能遍歷一些系統(tǒng)保留文件夾,如$RECYCLE.BIN、System Volume Information等,如果不寫判斷條件,會導(dǎo)致下面的讀取出錯(cuò)。因此,以后遍歷文件夾的時(shí)候,還是建議時(shí)候上面的os.walk的方式。
不過,我們可以從上面的程序看到幾個(gè)常見的用法,os.sep能夠直接返回文件分隔符/或者\(yùn)\、、os.path.join(文件所在目錄的路徑、文件名)能把文件所在目錄的路徑與文件名連接起來,os.path.isdir(完整路徑)能判斷是否是目錄,endswith("xx")方法能判斷字符串是否以xx結(jié)束的。os.path.dirname()能得到文件所在目錄的路徑,os.path.basename()能得到文件名,os.listdir(路徑)能得到相應(yīng)的文件列表,等等。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例
這篇文章主要介紹了Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python自制一個(gè)PDF轉(zhuǎn)PNG圖片小工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python中的PyQt5自制一個(gè)PDF轉(zhuǎn)PNG格式圖片的小工具,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-02-02
在Django的URLconf中使用多個(gè)視圖前綴的方法
這篇文章主要介紹了在Django的URLconf中使用多個(gè)視圖前綴的方法,Django是Python中最為著名的遵循MVC結(jié)構(gòu)的開發(fā)框架,需要的朋友可以參考下2015-07-07
python實(shí)現(xiàn)的config文件讀寫功能示例
這篇文章主要介紹了python實(shí)現(xiàn)的config文件讀寫功能,結(jié)合實(shí)例形式分析了Python文件讀寫相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
pytorch 網(wǎng)絡(luò)參數(shù) weight bias 初始化詳解
這篇文章主要介紹了pytorch 網(wǎng)絡(luò)參數(shù) weight bias 初始化詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python中l(wèi)ower函數(shù)實(shí)現(xiàn)方法及用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于python中l(wèi)ower函數(shù)實(shí)現(xiàn)方法及用法講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。2020-12-12

