Получить отсортированный вывод для os.walk()

У меня есть кусок кода, который выглядит так:

import os
for r,d,f in os.walk('/home/vibhor/Downloads'):
     print(r,len(f))

Мне нужно иметь отсортированный вывод по числу файлов, который печатает вывод, отсортированный по количеству файлов, представленных в подкаталоге. Какие изменения я должен сделать в коде.

2 ответа

Решение

Сохраните данные в некотором списке, затем сортируйте их по длине в качестве ключа. Затем вы можете перейти к тому, что вы хотите с отсортированными данными.

В приведенном ниже примере data содержит пары каталогов и количество файлов, отсортированных.

data = [(r, len(f)) for r, d, f in os.walk('/home/vibhor/Downloads')]
data = sorted(data, key=lambda x: x[1])

Определите ключ, который вы хотите использовать для сортировки, следующим образом:

print(sorted([(r, d, f) for r, d, f in os.walk('/home/vibhor/Downloads')], key=lambda x: len(x[2]), reversed=True))

reversed=True дает ответ в порядке убывания.

Другие вопросы по тегам