zoukankan      html  css  js  c++  java
  • python 递归查找jpg文件并打印

    文件递归  查找出以('jpg', 'gif', 'png','JPG', 'GIF', 'PNG') 结尾的文件并打印

    遇到的bug: 好几个文件夹下面的照片都是以大写格式的JPG 显示的,当时只考虑到小写, 导致其他文件以.JPG结尾的文件都打印不出来。。。导致问题定位了很久   

    遗留:压缩包的文件(rar 或zip )暂未处理 

      思路:文件解压 pip3 install rarfile 得将unrar.exe放在当前脚本的同一目录下

    import os
    #import rarfile
    
    
    def get_picture(filepath, layer):
        #遍历filepath下所有文件,包括子目录
        prefix = joinStr('-', layer)
        layer += 1
    
        if os.path.isdir(filepath):
            print(prefix, ' 文件夹 ', filepath, " size=", os.path.getsize(filepath))
        else:
            print(prefix, ' 文件 ', filepath, " size=", os.path.getsize(filepath))
            return
    
        files = os.listdir(filepath)
        for fi in files:
            #文件路径
            fi_d = os.path.join(filepath,fi)
            if os.path.isfile(fi_d):
                prefix = joinStr('-', layer)
                if os.path.basename(fi_d).endswith(('jpg', 'gif', 'png','JPG', 'GIF', 'PNG')):
                    print(prefix, fi_d, " size=", os.path.getsize(fi_d))
                elif fi_d.endswith(('.zip', '.rar')):
                        print(prefix, "发现压缩包: ", fi_d, " size=", os.path.getsize(fi_d))
                        # rf = rarfile.RarFile(fi_d)# 待解压文件
                        # current_path=fi_d.split('.')[0] #
                        # rf.extractall(current_path)  # 解压到当前文件路径下
                        # if os.path.isdir():
                        #    get_picture(current_path)
                        # rf.close()
                else:
                    print(prefix, ' 其他文件 ', fi_d, " size=", os.path.getsize(fi_d))
            # 判断是否是文件夹
            #如果是个dir,则再次调用此函数,传入当前目录,递归处理。
            elif os.path.isdir(fi_d):
                get_picture(fi_d, layer)
            else:
                print("你弱爆了")
        #return
    
    def recursorFile(filePath, layers):
        """
        :param filePath: 文件对象
        :param layers: 层数
        """
        front = joinStr("-", layers)
        print(front, end="")
    
        print(os.path.basename(filePath))
    
    
    def joinStr(str, times):
        rs = ""
        for i in range(times):
            rs += str
        return rs
    
    #recursorFile('F:\照片', 3)
    get_picture('F:\照片', 0)
  • 相关阅读:
    iOS 设计模式-委托模式
    python中时间操作总结
    list、dict、tuple的一些小操作总结
    DataFrame的构建及一些操作
    python连接mysql、oracle小例子
    sqlalchemy 映射的小例子
    crontab定时任务以及其中中文乱码问题
    vs2008试用版的评估期已经结束解决办法
    MongoDB 常用shell命令汇总
    把py文件打成exe
  • 原文地址:https://www.cnblogs.com/eosclover/p/11407512.html
Copyright © 2011-2022 走看看