python 统计指定文件夹下所有的文件数量

本来一直是有这个需求,只是以前写的是递归的方式处理,感觉对资源的占用不友好,而且python的最大递归深度不超过1000,所以改了一下,这里用广度优先遍历的方式实现。

实测两层共24个文件夹,共50w的文件数量。运行时间大概3秒。以下是代码:

import os

import queue

def get_file_quantity(folder: str) -> int:

'''BFS获取文件夹下文件的总数量'''

# 判断初始文件夹

assert os.path.isdir(folder), '请输入有效的文件夹参数'

file_quantity = 0 # 初始化文件数量

folder_path_queue = queue.Queue()

folder_path_queue.put_nowait(folder) # 初始化队列的值

# 处理队列里的文件夹

while not folder_path_queue.empty():

folder = folder_path_queue.get_nowait()

file_folder_list = list(map(lambda bar: os.path.join(folder, bar), os.listdir(folder)))

folder_list = list(filter(lambda bar: os.path.isdir(bar), file_folder_list))

for folder_path in folder_list:

folder_path_queue.put_nowait(folder_path)

temp_file_count = len(file_folder_list) - len(folder_list)

file_quantity += temp_file_count

return file_quantity

if __name__ == '__main__':

file_quantity = get_file_quantity(r'/home')

print(f'文件总数是: {file_quantity}')

思路

这里主要是使用了队列,就是普通的BFS的思路

这里稍微改一下folder_list = list(filter(lambda bar: os.path.isdir(bar), file_folder_list))里的的lambda函数就可以实现判断对文件名的各种判断操作,这里函数功能的实现就完全取决于自己的脑洞了!

附上一个改编版: 查看包含特定后缀的文件的数量

改编版: 查看包含特定后缀的文件的数量

import os

import queue

def filter_extension(filename: str, extension: str) -> bool:

'''判断文件路径名的后缀是否和给定的后缀字符串相同

只是单纯的字符串判断

'''

basename_and_extension = filename.split('.')

return (basename_and_extension[-1] == extension) and (len(basename_and_extension) >= 2)

def get_file_quantity(folder: str, extension: str) -> int:

'''BFS获取文件夹下文件的总数量'''

# 判断初始文件夹

assert os.path.isdir(folder), '请输入有效的文件夹参数'

assert isinstance(extension, str), '请输入有效的文件后缀名'

file_quantity = 0 # 初始化文件数量

folder_path_queue = queue.Queue()

folder_path_queue.put_nowait(folder) # 初始化队列的值

# 处理队列里的文件夹

while not folder_path_queue.empty():

folder = folder_path_queue.get_nowait()

file_folder_list = list(map(lambda bar: os.path.join(folder, bar), os.listdir(folder)))

folder_list = list(filter(lambda bar: os.path.isdir(bar), file_folder_list))

file_list = list(filter(lambda bar: os.path.isfile(bar), file_folder_list))

match_extension_list = list(filter(lambda bar: filter_extension(bar, extension), file_list))

for folder_path in folder_list:

folder_path_queue.put_nowait(folder_path)

temp_file_count = len(match_extension_list)

file_quantity += temp_file_count

return file_quantity

if __name__ == '__main__':

extension = 'py'

file_quantity = get_file_quantity(r'/home', extension)

print(f'包含后缀 {extension } 的文件的数量: {file_quantity}')

python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...相关推荐

  1. c语言中sub是什么文件,Windows操作: (1)在C:盘根目录下建立SUB文件夹,在SUB文件夹下建立SUB1子文件夹和SUB2子文件夹。(2_开卷宝...

    Windows操作:(1)在C:盘根目录下建立SUB文件夹.在SUB文件夹下建立SUBl子文件夹和SUB2子 Windows操作: (1)在C:盘根目录下建立SUB文件夹.在SUB文件夹下建立SUBl ...

  2. centos删除文件不释放_Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少...

    本文主要向大家介绍了Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 最近删除一 ...

  3. python文件行数运行结果_python统计文件行数

    '(或者包含'\n'的字串,如在windows系统中): count = 0thefile = open(thefilepath, 'rb')while True:buffer = thefile.r ...

  4. python 读取文件到字典读取顺序_Python用list或dict字段模式读取文件的方法

    前言 Python用于处理文本数据绝对是个利器,极为简单的读取.分割.过滤.转换支持,使得开发者不需要考虑繁杂的流文件处理过程(相对于JAVA来说的,嘻嘻).博主自己工作中,一些复杂的文本数据处理计算 ...

  5. python统计文件行数检测字符串_python统计文件中的字符串数目示例

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. Python实验项目1例:使用进程池统计指定范围内素数的个数

    本周赠书活动:董付国老师Python系列教材赠书活动(40本) -------------------------------- 适用专业: 适用于计算机.网络工程.软件工程等相关专业,其他专业选做. ...

  7. 04.配置unp.h头文件出现开启 xinetd daytime 服务时 /etc/xinetd.d下 没有daytime 文件的解决办法

    一.引言 最近在学习 <Unix网络编程 卷1:套接字联网 API>.在编译其第一份代码 daytimetcpcli.c 的时候,发现作者使用到了 daytime 服务.比如下面这行代码: ...

  8. python打印出指定目录下的所有文件夹和文件名(递归实现)

    2019独角兽企业重金招聘Python工程师标准>>> Python很好玩,今天用Python实现了一个简单的目录列表功能,开始碰到了很多奇怪的问题,主要是因为自己对Python的文 ...

  9. python遍历目录下的所有文件和目录详细介绍

    目录结构如下图: test---a------d------g--------g.txt test---a------d------a.txt test---a------e --------b -- ...

最新文章

  1. 文件流处理流式处理大数据处理
  2. 学校工作必备ASP程序
  3. 设计模式1实践-开篇
  4. 【PAT乙级】1083 是否存在相等的差 (20 分)
  5. linux tomcat6 jmx,Zabbix3.2.6之通过JMX监控Tomcat
  6. C和指针之学习笔记(3)
  7. python提供了名称为什么的构造方法_python面向对象编程(1)——基本概念,术语,self,构造器...
  8. 编写可靠shell脚本的8个建议
  9. 微信小程序页面 scroll-view滚动条隐藏
  10. [图文详解]图像处理中的高斯模糊
  11. SAP-MM-PA精解分析系列之供应商(01)-基本概念及业务介绍
  12. Linux如何修改网卡ip地址!
  13. ES插件es-head下载和安装
  14. 商城购物APP——YiGo
  15. redis:Unable to connect to localhost:6379
  16. 批量删除数码照片或手机中的相机参数和个人隐私信息
  17. 小米手机访问电脑共享文件_小米手机不用数据线直接访问电脑上的文件的方法...
  18. 软件工程师的试炼之地:53道Python面试问答
  19. STM32 串口的使用
  20. 无线传感器网络:定位、安全与同步

热门文章

  1. 线性代数笔记:汉克尔矩阵(Hankel matrix)
  2. xarray 笔记:DataArray
  3. 运动检测(前景检测)之(二)混合高斯模型GMM
  4. Hadoop-2.2.0学习之一Hadoop-2.2.0变化简介
  5. Python3--批量爬取数据之调金山词霸api进行翻译
  6. R语言-用bat调用R脚本
  7. 35+ Top Apache Tomcat Interview Questions And Answers【转】
  8. 如何在windows上玩转redis的最新特性?
  9. webp app推荐图片格式,更小更快减少oom
  10. Lesson 14.3 Batch Normalization综合调参实战