1. 程式人生 > >Python 遍歷資料夾中的指定型別檔案

Python 遍歷資料夾中的指定型別檔案

首先羅列一下os.path模組的相關函式:
1.判斷型函式:
exists() 指定路徑(檔案或者目錄)是否存在
isabs() 指定路徑是否為絕對路徑
isdir() 指定路徑是否存在且為一個目錄
isfile() 指定路徑是否存在且為一個檔案
islink() 指定路徑是否存在且為一個符號連結
ismount() 指定路徑是否存在且為一個掛載點
samefile() 兩個路徑名是否指向同一個檔案
2.檔案資訊型函式:
getatime() 返回最近訪問時間 (浮點型秒數)
getctime() 返回檔案建立時間
getmtime() 返回最近檔案修改時間
getsize() 返回檔案大小 (位元組為單位)
abspath() 返回絕對路徑
normpath() 規範path字串形式
最後兩個函式的例子:
a = “dapei-imgs_21667c16-fff5-45ca-829b-cf509f9886bb.jpg”

os.path.abspath(a)
‘D:\Python27\user\dapei-imgs\_21667c16-fff5-45ca-829b-cf509f9886bb.jpg’
os.path.normpath(a)
‘dapei-imgs\_21667c16-fff5-45ca-829b-cf509f9886bb.jpg’
另外把a寫成a = “dapei-imgs/_21667c16-fff5-45ca-829b-cf509f9886bb.jpg”
結果沒變化

3.路徑字串操作函式:
一個完整的路徑字串分成 abspath = driver+path+filename(name+extname)
因為有一定的格式在其中,所以對路徑字串的操作原則上都是根據這些格式進行的。
基本的分割函式有3個,都是把字串分割成兩部分
split() 把路徑分成兩部分,依據符合“\”,第二部分是最後一個“\”符號的右邊部分
splitdrive() 把路徑中的驅動器名稱分割到第一部分,沒有則為空,依據“:”符號
splitext() 把路徑中的副檔名分割到第二部分,沒有則為空,依據“.”符號
以split()為基礎,派生出的兩個函式分別對應split()返回值的第一項和第二項
dirname()
basename()
最後是一個與split()對仗的操作
join() 把多個字串拼接成路徑,插入“\”符號

下面用一個遍歷資料夾下的檔案來說明上述函式的應用,在實際專案中,當然可以用os.walk()或者os.path.walk()來完成這個工作(程式設計的核心是設計的創意,而不是所處的巨集觀層次)。

import os
Const_Image_Format = [".jpg",".jpeg",".bmp",".png"]
class FileFilt:
    fileList = [""]
    counter = 0
    def __init__(self):
        pass
    def FindFile(self,dirr,filtrate = 1):
        global
Const_Image_Format for s in os.listdir(dirr): newDir = os.path.join(dirr,s) if os.path.isfile(newDir): if filtrate: if newDir and(os.path.splitext(newDir)[1] in Const_Image_Format): self.fileList.append(newDir) self.counter+=1 else: self.fileList.append(newDir) self.counter+=1 if __name__ == "__main__": b = FileFilt() b.FindFile(dirr = "D:\Python27\user\dapei-imgs") print(b.counter) for k in b.fileList: print k