美文网首页
python筛选目录下非jpeg,png,bmp格式的图片

python筛选目录下非jpeg,png,bmp格式的图片

作者: ksnowlv | 来源:发表于2019-05-15 20:57 被阅读0次

    功能:筛选指定目录下非jpeg/png/bmp格式的文件,并把路径以日志形式输出。

    关键有两点:

    • 目录遍历,记录所有文件路径。
    • 遍历路径,使用imghdr.what判断文件格式,非jpeg/png/bmp格式的文件路径输出。
    
    import os
    import imghdr
    
    ##工具功能:筛选目录下非jpeg,png,bmp格式的图片,并输出其路径
    ##Python 3.0
    
    #图片文件夹目录
    IMAGEPATH = None
    
    #初始化
    def init():
        global IMAGEPATH
        IMAGEPATH  = "/Users/ksnowlv/Documents/image"
    
    
    # 功能:读取指定目录下的所有文件绝对路径(包括该目录下所有子目录),并以列表形式返回
    
    def readDir(dirPath):
        myDirPath = dirPath
        if dirPath.endswith('/'):# 要求传入的路径参数最后不能有斜杠,目的是为了递归时格式统一
            myDirPath = dirPath.rstrip('/')
            print('文件夹路径末尾删除/ = %s'%(myDirPath))
    
        allFiles = []
    
        if os.path.isdir(myDirPath):
            fileList = os.listdir(myDirPath)
            for f in fileList:
                f = myDirPath+'/'+f
                if os.path.isdir(f):
                    subFiles = readDir(f)
                    allFiles = subFiles + allFiles #合并当前目录与子目录的所有文件路径
                else:
                    allFiles.append(f)
            return allFiles
        else:
            print('Error,not a dir')
        return allFiles
    
    #根据路径筛选出非目标图片的路径
    def filterPicture(fileList):
        for fileName in fileList:
            # data = open(fileName, 'rb').read(20)
            fileType = imghdr.what(fileName)
            # print("filename = %s fileType = %s" % (fileName,fileType))
    
            if fileType != "jpeg" and fileType != "png" and fileType != "bmp":
                print("filename = %s can not parse fileType = %s " % (fileName, fileType))
    
    def main():
        init()
        fileList = readDir(IMAGEPATH)
        filterPicture(fileList)
    
    
    if __name__ == '__main__':
        main()
    

    相关文章

      网友评论

          本文标题:python筛选目录下非jpeg,png,bmp格式的图片

          本文链接:https://www.haomeiwen.com/subject/jkgmaqtx.html