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

时间:2018-11-05 00:35:57

标签: python directory

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))

但不确定如何根据扩展名类型进行汇总

1 个答案:

答案 0 :(得分:0)

由于collections.Counter()仅会给您带来计数,因此文件分组方法可能会更简单。

您可以做什么:

1。。按扩展名对文件大小进行分组,也许使用collections.defaultdict()

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))