首先Python獲取路徑下所有文件到一個list
import os def GetFileList(dir, fileList): newDir = dir if os.path.isfile(dir): fileList.append(dir.decode('gbk')) elif os.path.isdir(dir): for s in os.listdir(dir): #如果需要忽略某些文件夾,使用以下代碼 #if s == "xxx": #continue newDir=os.path.join(dir,s) GetFileList(newDir, fileList) return fileList list = GetFileList('D:\\workspace\\PyDemo\\fas', []) for e in list: print e
進一步,對list里面的文件進行排序,參考
:python字符串排序
因此上總的代碼:按照文件名里面數字的大小進行排序
def GetFileList(dir, fileList): newDir = dir if os.path.isfile(dir): fileList.append(dir.decode('gbk')) elif os.path.isdir(dir): for s in os.listdir(dir): newDir = os.path.join(dir, s) GetFileList(newDir, fileList) return fileList def my_cmp(v1, v2): p = re.compile("(\d+)") d1 = [int(i) for i in p.findall(v1)][0] d2 = [int(i) for i in p.findall(v2)][0] return cmp(d1, d2) def main(): # parse arguments #begin to work with a serial of images in the imgDir imgDir = "/Users/anitafang/Downloads/Datasets/640480video_test/lx" # imgs = os.listdir(imgDir) # imgNum = len(imgs) list = GetFileList(imgDir, []) list.sort(my_cmp) for e in list[1:]: print(e) frame = detector.detect_draw_on_frame(mio.import_image(filepath=e)//開始單幀處理
進一步工作,讀取一個文件夾下所有的文件名都是圖片,提取圖片的名稱中的數字,按照數字來保存文件。
sub_file_array = os.listdir(fpath) for sub_file in sub_file_array: sub_file_path = fpath+os.sep+sub_file if sub_file!=".DS_Store" and os.path.isfile(sub_file_path)://去掉.DS_Store文件和該目錄下的文件夾,只保存圖片
print(sub_file) self.clear_result()