Python Найти тип расширения в текущем каталоге, сосчитать их и найти минимальный, средний и максимальный размер файла для каждого типа расширения - PullRequest
0 голосов
/ 05 ноября 2018
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 голосов
/ 05 ноября 2018

Поскольку 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...