python 遍历指定文件夹下 的指定类型文件

本文介绍如何使用Python的os模块批量查找指定目录下的特定类型文件,并提供了一个示例函数用于删除尺寸低于1920*1080的图片。代码详细展示了如何递归遍历目录,判断文件类型并进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实python下面找文件还是比较简单的 ,主要用到的就是 os.listdir(rootDir)这个函数,这个函数会将rootDir文件夹下所有的文件(不管是文件夹还是文件等等) 的名称存储在一个list 里面, 自己访问的时候记得把 路径处理好,如下,

for dir_or_file in os.listdir(rootDir):
        filePath = os.path.join(rootDir, dir_or_file)

然后就可以通过 函数os.path.isfile(filePath) 与之对应的还有os.path.isdir(filePath)  来判断是文件夹还是文件 ,如果是文件夹的话 ,就递归调用原函数,如下

searchDirFile(rootDir, fileList, fileType):

这里说明下参数的作用

rootDir:指你要查找的根目录,(记得用 "\\" 或者 "/")

fileList: fileList,这里可以使用全局变量(其实不用),来存储你寻找的文件 的地址

注意在Python中,一切皆对象, Python参数传递采用的都是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象,此时如果想改变这些变量的值,可以将这些变量申明为全局变量。
 

fileType:你要查找的文件类型, if filePath[-len(fileType):] == fileType: 这里我做了下处理,所以fileType = "jpg", " .jpg" 类似这样的加不加 . 都可以 

我这个 deleteFile()函数 是准备来删除图片文件(像素 低于 1920*1080)的图片全部删除 ,其他的没什么好说的了,自己看代码吧

 

 

 


from bs4 import BeautifulSoup
import requests
import urllib.request
import re, os
from PIL import Image



def searchDirFile(rootDir, fileList, fileType):
    for dir_or_file in os.listdir(rootDir):
        filePath = os.path.join(rootDir, dir_or_file)
        if os.path.isfile(filePath):
            if filePath[-len(fileType):] == fileType:
                fileList.append(filePath)
                #shutil.copyfile(filePath,os.path.join(saveDir,os.path.basename(filePath)))
            else:
                continue
        elif os.path.isdir(filePath):
            searchDirFile(filePath, fileList, fileType)
        else:
            print('not file and dir '+os.path.basename(filePath))


def deleteFile(fileList):
    countDele = 0
    count = 0
    for path in fileList:
        try:
            fp = open(path, 'rb')
            im = Image.open(fp)
            fp.close()
            x, y = im.size
            if x < 1920 or y < 1080:
                os.remove(path)
                countDele += 1
                count += 1
                if count == 100:
                    print('已删除 100 张图片')
                    count = 0
        except Exception:
            continue
    return countDele



if __name__ == "__main__":
    fileList = list()
    path = 'D:\\software_study\\PYTHON\\Project\\DownloadPic'
    searchDirFile(path, fileList, '.jpg')   
    print('已删除 ' + str(deleteFile(fileList)) + ' 张图片')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值