2017-10-17 40 views
2

我有一段代碼,這是這樣的:獲取os.walk(有序輸出)

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

我需要的文件數量,打印整理的輸出端的有序輸出在子目錄下顯示的文件數的基礎,我應該對代碼做些什麼改變。

+0

添加輸入和預期輸出的示例請 – Vinny

回答

2

將數據保存在某個列表中,然後使用長度作爲關鍵字進行排序。然後,你可以繼續做任何你想要的排序數據。

在下面的例子中,data包含目錄和文件數量對,排序。

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

定義要用於排序的關鍵如下:

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給人以遞減順序答案。

+0

OP聲稱他只需要dirnames和文件數量。爲什麼要將所有的文件和文件保存在列表中? – Uriel

+0

OP的哪個部分讓你得出這個結論?我只看到他要求通過目錄中的文件數量來訂購。 – Adirio