Python讀取文件夾下的一系列圖片然后按照數字進行排序處理


首先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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM