Python如何统计二维列表中指定前缀本地路径的文件总大小
统计segment_upload_list本地文件总大小实现方案
问题分析
你当前的代码totalsize = sum([os.stat(f).st_size for f in segment_upload_list[0]])存在两个核心问题:
segment_upload_list[0]仅会读取二维列表的第一个子元素,完全没有遍历所有文件条目- 没有做路径前缀过滤,甚至会把子列表中存储的远端非本地路径传入
os.stat,极易触发文件不存在的报错
你的segment_upload_list是二维列表结构,每个子列表固定为[本地文件路径, 远端存储路径]格式,需要遍历所有子列表,提取第一个元素的本地路径,匹配前缀后再统计大小。
实现代码
基础版本(无容错)
适合确定所有匹配前缀的文件都存在的场景:
import os # 定义本地路径前缀常量 TARGET_PREFIX = "/tmp/VODProcessing/" totalsize = sum( os.stat(item[0]).st_size for item in segment_upload_list if item[0].startswith(TARGET_PREFIX) )
注:这里用生成器表达式而非列表推导式,不需要先生成完整的大小列表再求和,大数量场景下内存占用更低。
容错版本
如果存在路径匹配但文件实际缺失的场景,可以增加文件存在性判断避免程序中断:
import os TARGET_PREFIX = "/tmp/VODProcessing/" totalsize = 0 for item in segment_upload_list: local_path = item[0] # 同时满足前缀匹配、是真实存在的文件才统计 if local_path.startswith(TARGET_PREFIX) and os.path.isfile(local_path): totalsize += os.stat(local_path).st_size
内容的提问来源于stack exchange,提问作者user18726875
相关产品推荐
相关产品推荐

