在做驗證碼識別時,識別時需要和庫里的圖片對比,找到最接近的那個圖片,然后就行到了用與圖片一致的字符命名,獲取文件的名稱,去將圖片的名稱讀出來作為驗證碼。以下是我通過網上的資料總結的三種文件遍歷的方式,第一種和第二種相似,只是和第三種有一些區別。
首先要獲得文件夾的路徑,我是對某個文件夾下的文件進行遍歷,需要去除文件的后綴,注:num為我創建的一個文件夾
import os # 需要用到os包 s = os.sep # s區分在linux或windows系統下的分割符"/"或"\" root = "C:\Users\XXX\Desktop" + s + "num" + s # 文件路徑 mode = [] # 用mode進行去掉后綴的文件名存儲。 # 遍歷文件的第一種方式: sname = os.listdir(root) # 獲取文件夾下文件或文件夾的名稱,獲取到的sname的格式為('1.jpg')。 for f in sname: fname = os.path.splitext(f) # 對f中的文件名進行分割,分割后顯示為['1','jpg'] mode.append(fname[0]) # fname[0],取序列中的第一值,即['1'] # 遍歷文件第二種方法(python2支持,python3不支持) def func(args, dire, fis): for f in fis: fname = os.path.splitext(f) # splitext分割文件名和文件后綴 mode.append(fname[0]) os.path.walk(root, func, ()) # 通過調用函數進行文件的遍歷,這種方法只能獲取到文件夾下的文件名,不能獲取到子文件夾下的其他內容 # 使用os.walk-遍歷文件的第三種方法: for rt, dirs, files in os.walk(root): # 通過os.walk進行文件遍歷,可以獲得文件夾下子文件內的內容,dirs為遞歸查出的所有文件夾,files為遞歸查出的所有文件 for f in files: fname = os.path.splitext(f) mode.append(fname[0])