亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-23 11:42:50 來源:腳本之家 閱讀:319 作者:yongh701 欄目:開發技術

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

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

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

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遍歷某目錄下的所有文件夾與文件路徑

上述程序,將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遍歷某目錄下的所有文件夾與文件路徑

當然,這種形式有其弊端,就是不能遍歷一些系統保留文件夾,如$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(路徑)能得到相應的文件列表,等等。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐城市| 拉萨市| 龙南县| 兴城市| 宁都县| 怀化市| 应城市| 浦东新区| 多伦县| 任丘市| 新乐市| 水城县| 临高县| 汝南县| 南京市| 晴隆县| 克什克腾旗| 武乡县| 三门峡市| 神木县| 翼城县| 长乐市| 溧阳市| 鄂托克旗| 高阳县| 鲁甸县| 江陵县| 当涂县| 房山区| 南漳县| 宁夏| 乐山市| 徐汇区| 普定县| 五家渠市| 华容县| 华亭县| 财经| 平阴县| 贵阳市| 弥渡县|