Python使用Pathlib统计文件大小求和时报'long'对象不可迭代如何解决
错误原因
sum()函数要求传入可迭代对象(如列表、元组、生成器)才能完成求和操作,你原有代码中file_size在每次循环时都被赋值为单个文件的字节大小数值(属于长整型/整型),本身不支持迭代,因此调用sum(file_size)会抛出TypeError: 'long' object is not iterable错误。
修复后的代码
方法1:循环累加(和你原有写法逻辑最贴近,保留单文件大小打印)
from pathlib import Path # 初始化总大小计数器 total_size = 0 for path in Path('C:\\Users\\file\\path\\here').rglob('*.kml'): # path本身就是Path实例,无需重复封装Path(),也无需重复调用stat() file_size = path.stat().st_size print(file_size) # 累加单文件大小到总计数器 total_size += file_size print(f"所有.kml文件总大小:{total_size} 字节") # 如需转换为MB单位可使用下行代码 # print(f"所有.kml文件总大小:{total_size / 1024 / 1024:.2f} MB")
方法2:生成器表达式简洁写法
如果不需要打印单个文件的大小,可直接用生成器配合sum完成求和,代码更精简:
from pathlib import Path file_root = Path('C:\\Users\\file\\path\\here') total_size = sum(path.stat().st_size for path in file_root.rglob('*.kml')) print(f"所有.kml文件总大小:{total_size} 字节")
内容的提问来源于stack exchange,提问作者sungliengk
相关产品推荐
相关产品推荐

