Получить отсортированный вывод для 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
дает ответ в порядке убывания.