国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python遍歷某目錄下的所有文件夾與文件路徑

2020-01-04 15:37:58
字體:
來源:轉載
供稿:網友

本文與《【Java】讀取其下所有文件夾與文件的路徑》 為姊妹篇,主要講述Python對于文件信息的讀取操作。

Python對于文件信息的讀取操作,在其固有類os中。

下面以讀取F盤下的所有文件夾作為例子說明這個問題:

python,遍歷,目錄,文件夾,python遍歷目錄下文件路徑,python遍歷文件路徑,python遍歷文件

Python對于文件夾的遍歷有兩種寫法,一種是直接利用其封裝好的walk方法直接操作。
這是Python做得比Java優勢的地方:

# -*-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'); 

運行效果如下:

python,遍歷,目錄,文件夾,python遍歷目錄下文件路徑,python遍歷文件路徑,python遍歷文件

上述程序,將os.walk讀取到的所有路徑root、目錄名dirs與文件名files,也就是三個文件數組利用foreach循環輸出。

join方法就是講其路徑與目錄名或者文件名連接起來,組成一個完整的目錄。

后面的.decode('gbk').encode('utf-8');方法主要是給Eclipse下的PyDev控制臺用的,如果不加控制臺的輸出會出現亂碼,但是,如果你的Python程序是要拉到Windows的控制臺cmd,使用python xx.py運行的話,請不要加這段編碼方法,同時去掉開頭的# -*-coding:utf-8-*-。因為cmd是使用gb2312簡體中文編碼的,而不是像Linux的終端是utf-8編碼。

也可以根據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'); 

運行效果如下:

python,遍歷,目錄,文件夾,python遍歷目錄下文件路徑,python遍歷文件路徑,python遍歷文件

當然,這種形式有其弊端,就是不能遍歷一些系統保留文件夾,如$RECYCLE.BIN、System Volume Information等,如果不寫判斷條件,會導致下面的讀取出錯。因此,以后遍歷文件夾的時候,還是建議時候上面的os.walk的方式。

不過,我們可以從上面的程序看到幾個常見的用法,os.sep能夠直接返回文件分隔符/或者//、、os.path.join(文件所在目錄的路徑、文件名)能把文件所在目錄的路徑與文件名連接起來,os.path.isdir(完整路徑)能判斷是否是目錄,endswith("xx")方法能判斷字符串是否以xx結束的。os.path.dirname()能得到文件所在目錄的路徑,os.path.basename()能得到文件名,os.listdir(路徑)能得到相應的文件列表,等等。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桑日县| 鸡西市| 永平县| 宜川县| 大洼县| 吉隆县| 宜丰县| 九龙城区| 手游| 莱芜市| 长寿区| 武威市| 庐江县| 天津市| 鹿泉市| 镇坪县| 泾川县| 崇礼县| 盐亭县| 芜湖市| 庆城县| 弥渡县| 巴林左旗| 长葛市| 刚察县| 武夷山市| 湖州市| 黄梅县| 浦北县| 泾阳县| 疏附县| 米泉市| 怀化市| 潍坊市| 海林市| 那曲县| 阜平县| 清远市| 贡嘎县| 肇源县| 岢岚县|