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

 

posted @ 2017-11-13 11:05  Anita-ff  阅读(4754)  评论(0编辑  收藏  举报