Python--获取指定目录下的指定类型文件

 一、获取目录下指定类型的的文件,返回一个列表

#无递归:
def Dirfile(srcdir ,file_ext):
    filelist = []
    dstlist = []
    filelist.append(srcdir)
    while len(filelist) != 0:
        tmpdir = filelist.pop()
        if os.path.isdir(tmpdir):
            tmpvec = os.listdir(tmpdir)
            for tmpitem in tmpvec:
                filelist.append(tmpdir + "\\" + tmpitem)
        else:
            if os.path.isfile(tmpdir):
                if os.path.splitext(tmpdir)[1] == file_ext:
                    dstlist.append(tmpdir)
    return dstlist



#有递归:
def dst_dir_file(file_path, file_ext= ".txt", list = []):
    for item in os.listdir(file_path):
        path = os.path.join(file_path, item)
        if os.path.isdir(path):
            dst_dir_file(path, file_ext, list)
        if path.endswith(file_ext):
            list.append(path)

 

二、获取目录下指定文件夹下指定类型的文件,返回一个列表

def Finddirfile(srcdir, dstdir, fileext):
    filelist = []
    dstlist = []
    resultlist = []
    filelist.append(srcdir)
    while len(filelist) != 0:
        tmpdir = filelist.pop(0)
        if os.path.isdir(tmpdir):
            tmpvec = os.listdir(tmpdir)
            for tmpitem in tmpvec:
                filelist.append(tmpdir + "\\" + tmpitem)
            if os.path.split(tmpdir)[1] == dstdir:
                for item in os.listdir(tmpdir):
                    dstlist.append(tmpdir + "\\" + item)
    while len(dstlist) != 0:
        tmpdst = dstlist.pop(0)
        if os.path.isdir(tmpdst):
            for tempdst in os.listdir(tmpdst):
                dstlist.append(tmpdst + "\\" + tempdst)
        else:
            if os.path.isfile(tmpdst):
                if os.path.splitext(tmpdst)[1] == fileext:
                    resultlist.append(tmpdst)
    if len(resultlist) != 0:
        return resultlist
    else:
        return resultlist

 

三、获取当前文件夹(一级目录不遍历)下指定多个类型的文件,返回一个列表

import os

img_type = ['.jpg','.JPG','.png','.PNG','.bmp','.BMP']#类型

img_path = ""#路径
img_path_vec = [os.path.join(img_path,imgpath) for imgpath in os.listdir(img_path) if os.path.splitext(imgpath)[1] in img_type]

 

最后,推荐使用glob2,支持正则通配符,一句代码简单搞定!

import glob2

path_vec = glob2.glob(r'D:\data\zp\*.jpg')

 

你可能感兴趣的:(Python)