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