簡體   English   中英

Python 按數字順序列出文件夾

[英]Python list folders list by numeric order

我正在使用以下代碼獲取特定目錄中所有文件夾的列表:

TWITTER_FOLDER = os.path.join('TwitterPhotos')
dirs = [d for d in os.listdir(TWITTER_FOLDER) if os.path.isdir(os.path.join(TWITTER_FOLDER, d))]

這是數組: ['1','2','3','4','5','6','7','8','9','10','11'] .

我想按以下順序獲取數組: ['11','10','9','8','7','6','5','4','3','2','1']

所以我使用這個代碼:

dirs.sort(key=lambda f: int(filter(str.isdigit, f)))

當我使用它時,我得到了這個錯誤:

int() argument must be a string, a bytes-like object or a number, not 'filter'

知道有什么問題嗎? 或者我如何以另一種方式對其進行排序? 數組將按數字順序排序很重要,例如:

12 11 10 9 8 7 6 5 4 3 2 1

並不是:

9 8 7 6 5 4 3 2 12 11 1

謝謝!

過濾器返回一個迭代器,您需要將它們重新連接成一個字符串,然后才能將其轉換為 integer

dirs.sort(key=lambda f: int(''.join(filter(str.isdigit, f))))

使用帶鍵sorted

In [4]: sorted(f, key=lambda x: int(x), reverse=True)
Out[4]: ['11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1']

或者您可以執行f.sort(key=lambda x:int(x), reverse=True)進行就地排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM