Python在当前目录中查找扩展名的类型,对它们进行计数,并查找每种类型扩展名的最小、平均和最大文件大小

2024-06-16 11:09:31 发布

您现在位置:Python中文网/ 问答频道 /正文

SplitTypes=[]
for file in os.listdir(os.curdir):
    SplitTypes.append(file.split('.')[-1])
collections.Counter(SplitTypes)

这给了我:

Counter({'txt': 2,
     'ipynb': 38,
     'Practical_Statistics': 1,
     'DS_Store': 1,
     'xlsx': 10,
     'xls': 2,
     'json': 9,
     'csv': 3,
     'workspace 2': 1,
     'py': 2,
     'templates': 1,
     'ipynb_checkpoints': 1,
     'log': 1,
     'exec -l ': 1})

但我想为每种类型的扩展添加最小、平均和最大文件大小,因为列表或字典并不重要。我知道如何使用以下方法获取目录中的每个文件大小:

for file in os.listdir(os.curdir):
    print(file, os.path.getsize(file))

但不确定如何基于扩展类型进行聚合


Tags: intxt类型foroscountercollectionsfile
1条回答
网友
1楼 · 发布于 2024-06-16 11:09:31

因为^{}只会返回计数,所以文件分组方法可能更简单。你知道吗

你能做什么:

1.按扩展名分组文件大小,可能使用^{}。你知道吗

2.对每组文件大小进行统计。你知道吗

演示:

from os import curdir
from os import listdir

from os.path import getsize
from os.path import splitext

from collections import defaultdict

# 1
d = defaultdict(list)
for file in listdir(curdir):
    _, extension = splitext(file)
    d[extension].append(getsize(file))

# 2
for extension, file_sizes in d.items():
    print('extension:', extension)
    print('count:', len(file_sizes))
    print('min file size:', min(file_sizes))
    print('max file size:', max(file_sizes))
    print('average file size:', sum(file_sizes) / len(file_sizes))

相关问题 更多 >