在Python的os模組中有兩個函數可應用
(1) os.walk()
os.walk(top, topdown=Ture, onerror=None, followlinks=False)
參數1_top: 根目錄下的每個資料夾(包含根目錄的資料夾), 產生3元組 [root, dirnames, filenames], 也就是[資料夾路徑(string), 子資料夾名稱(list), 檔案名稱(list)]
參數2_topdown: 預設為True, 可選擇為Ture或者不設定, 為Ture則優先訪問top目錄, 否則優先訪問top的子目錄
參數3_onerror: 可選擇為一個函數, 當walk發生異常時, 供調用, 假設報告這錯誤後, 將繼續walk, 或者拋出exception終止walk
參數4_followlinks: 可選擇設置為True, 將依序訪問目錄, 如果為False則優先訪問top的子目錄
補充:
假設根目錄dirpath為'./test/'
子資料夾為dirnames為'sub_test'
取得資料夾的完整路徑
os.path.join(dirpath, dirnames)
得到完整路徑為'./test/sub_test'
以下方檔案目錄做示範:
範例一:
import os
for root, dirs, files in os.walk(".", topdown=False):
for name in files:
print(os.path.join(root, name)) #根目錄+子資料夾路徑+檔案名稱
for name in dirs:
print(os.path.join(root, name)) #根目錄+子資料夾路徑
因為topdown為False,
故先訪問子資料夾後再輸出根目錄,
輸出結果如下:
範例二_取得特定檔案路徑:
output_File = []
for root, dirs, files in os.walk("."):
for name in files:
print(os.path.join(root, name))
if os.path.splitext(name)[1] == '.jpg':
output_File.append(os.path.join(root, name))
print('取得.jpg的檔案路徑: ', output_File)
輸出結果如下:
(2) os.listdir()
返回指定路徑下的檔案和資料夾列表
範例一:
import os
path = './'
dirs = os.listdir(path)
print(dirs)
輸出結果如下:
範例二:
import os
path = './'
dirs = os.listdir(path)
for file in dirs:
print(file)
輸出結果如下: