如何修改Python代码统计目录中特定后缀文件的总大小?
统计特定类型文件的总大小
没问题,你的现有代码已经能很好地统计当前目录下所有文件的总大小了!要改成统计特定类型文件(比如.py、.txt)的总大小,只需要在判断条件里加上文件扩展名匹配的逻辑就行,下面给你几种实用的实现方式:
方式1:统计单个类型的文件
如果只需要统计某一种扩展名的文件(比如仅.py),直接用str.endswith()判断扩展名即可:
import os # 统计当前目录下所有.py文件的总大小 total_py_size = sum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.py')) print(f"所有.py文件总大小:{total_py_size} 字节")
这里把扩展名判断和原有的os.path.isfile(f)条件用and结合,就能精准筛选出目标文件。
方式2:统计多种类型的文件
如果需要同时统计多个扩展名的文件(比如.py和.txt),推荐把目标扩展名放在一个集合里,用os.path.splitext()来获取文件扩展名并判断:
import os # 定义要统计的文件扩展名集合(按需添加或修改) target_extensions = {'.py', '.txt'} # 统计当前目录下指定类型文件的总大小 total_target_size = sum( os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f) and os.path.splitext(f)[1] in target_extensions ) print(f"指定类型文件总大小:{total_target_size} 字节")
os.path.splitext(f)[1]会返回文件的完整扩展名(比如test.txt会得到.txt),用集合来存储目标扩展名的好处是判断效率更高,也方便后续扩展类型。
额外补充:递归统计子目录中的文件
如果你的目录包含子文件夹,且需要递归统计所有子目录里的目标文件,可以用os.walk()来实现:
import os target_extensions = {'.py', '.txt'} total_size = 0 # 遍历当前目录及其所有子目录 for root, _, files in os.walk('.'): for file in files: # 判断文件扩展名是否在目标集合中 if os.path.splitext(file)[1] in target_extensions: # 拼接完整文件路径并累加大小 total_size += os.path.getsize(os.path.join(root, file)) print(f"递归统计指定类型文件总大小:{total_size} 字节")
这个版本会遍历所有层级的子目录,适合更复杂的目录结构场景。
内容的提问来源于stack exchange,提问作者i.darker
相关产品推荐
相关产品推荐

