
作品名称:如何高效统计文件数量及其类型
用到的库:os、collections


实现过程
一、代码设计
count_files_and_dirs(directory, include_hidden=False):函数接受两个参数,directory 是要统计的目录路径,include_hidden 是一个布尔值,默认为 False,表示是否包括隐藏的文件和目录。total_files和 total_dirs 分别用于累计文件和目录的数量。file_types是一个 defaultdict(int),用于统计不同文件类型的数量,键是文件扩展名,值是该类型的文件数量。os.walk(directory) 遍历指定目录及其所有子目录。os.walk 会生成一个三元组 (root, dirs, files),其中 root 是当前遍历到的目录路径,dirs 是该目录下的子目录列表,files 是该目录下的文件列表。include_hidden 为 False,则过滤掉隐藏文件和隐藏目录。隐藏文件和目录以点 . 开头。total_files和 total_dirs 分别累加当前目录下的文件和子目录数量。files 列表,使用 os.path.splitext(file)[1] 获取每个文件的扩展名,并转换为小写。如果文件有扩展名,则在 file_types 字典中对应的键值加一。directory 是一个目录,则在最后将 total_dirs 加一,以统计根目录本身。directory = './files':设置要统计的目录路径为当前目录下的 files 文件夹。include_hidden = False:设置不包括隐藏文件和目录。count_files_and_dirs(directory, include_hidden) 函数,并将结果赋值给 files、dirs 和 file_types。"""如何高效统计文件数量及其类型"""import osfrom collections import defaultdictdef count_files_and_dirs(directory, include_hidden=False):total_files = 0total_dirs = 0file_types = defaultdict(int)for root, dirs, files in os.walk(directory):# 如果不包括隐藏文件,则过滤掉隐藏文件和隐藏目录if not include_hidden:files = [f for f in files if not f.startswith('.')]dirs[:] = [d for d in dirs if not d.startswith('.')] # 修改原列表,不影响后续遍历total_files += len(files)total_dirs += len(dirs)# 统计文件类型for file in files:extension = os.path.splitext(file)[1].lower() # 获取文件扩展名,并转换为小写if extension: # 忽略没有扩展名的文件file_types[extension] += 1# 统计根目录if os.path.isdir(directory):total_dirs += 1return total_files, total_dirs, dict(file_types)directory = './files'include_hidden = False # 设置是否包含隐藏文件files, dirs, file_types = count_files_and_dirs(directory, include_hidden)print(f"总文件: {files}, 总目录: {dirs}")print("文件类型统计:")for ext, count in sorted(file_types.items()):print(f"{ext}: {count}")
二、结语
以上就是本次分享的全部内容,如果你有任何疑问或想要分享你的自动化办公经验,我们的评论区永远为你敞开。你的每一个点赞和转发,都是对我们最大的支持和鼓励!
想要深入学习并获取文中的完整代码吗?很简单,关注我们的公众号,并回复文章标题,即可立即获取。
再次感谢你的阅读,期待在下一次分享中与你相见!
精选阅读
python自动化系列:将Excel表格中的学生信息自动填充到一个word文档
python自动化系列:将Excel表格中的学生多条信息自动填充到一个Word文档