You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展Python代码统计目录下各扩展名文件总大小?

统计目录下所有扩展名的文件总大小

没问题,我帮你调整代码,让它能自动统计目标目录下所有存在的扩展名对应的文件总大小,最终会得到一个清晰的字典结构,完全匹配你想要的“扩展名-总字节数”对应关系:

import os

def calculate_size_by_extension(path):
    # 用字典存储每个扩展名对应的总大小,键是扩展名(比如'.txt'),值是总字节数
    size_by_ext = {}
    
    # 遍历目标目录下的所有文件(包括子目录)
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            # 跳过符号链接,避免统计无效文件的大小
            if os.path.islink(file_path):
                continue
            # 提取文件扩展名
            _, ext = os.path.splitext(file)
            # 如果需要忽略大小写(比如把.TXT和.txt归为一类),可以取消下面这行的注释
            # ext = ext.lower()
            # 获取文件大小并累加
            file_size = os.path.getsize(file_path)
            if ext in size_by_ext:
                size_by_ext[ext] += file_size
            else:
                size_by_ext[ext] = file_size
    
    return size_by_ext

# 示例使用
target_path = '/tmp'
extension_sizes = calculate_size_by_extension(target_path)

# 打印结果,方便查看
for ext, total_size in extension_sizes.items():
    print(f"{ext}: {total_size} bytes")

# 你可以直接使用extension_sizes这个变量,比如取.mp3的总大小:
# if '.mp3' in extension_sizes:
#     print(f".mp3总大小:{extension_sizes['.mp3']} bytes")

代码说明:

  • 用os.walk遍历目录,比glob更稳妥,能覆盖所有子目录的文件
  • 字典size_by_ext会自动记录每个扩展名的总大小,不需要提前指定要统计的扩展名
  • 加入了跳过符号链接的判断,避免获取无效文件的大小
  • 如果需要不区分扩展名大小写(比如把.TXT和.txt算成一类),可以取消ext = ext.lower()这行的注释

示例输出:

运行后你会得到类似这样的结果:

.txt: 134213443 bytes
.mp3: 1209879834 bytes
.jpg: 87654321 bytes
: 456789 bytes  # 这个是没有扩展名的文件总大小

你可以直接使用extension_sizes这个变量,它的结构和你想要的DataX完全对应,比如extension_sizes['.mp3']就能直接拿到所有mp3文件的总字节数。

内容的提问来源于stack exchange,提问作者LuigiKraken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:34:17