Python 对文件夹中大多数项目的文件夹列表进行排序
我有一个文件夹列表,可以通过Python 对文件夹中大多数项目的文件夹列表进行排序,python,sorting,Python,Sorting,我有一个文件夹列表,可以通过 import glob list_of_folders = glob.glob('path_to_folder/*') for folder in list_of_folders: 现在,我想根据文件夹中的文件数量对文件夹列表进行排序。差不多 list_of_folders.sort(key= lambda f: len(x) for x in glob.glob(f)) 但不管我怎么做,我都不能得到一个有效的lambda表达式。如何根据文件夹中的文件量对文件夹
import glob
list_of_folders = glob.glob('path_to_folder/*')
for folder in list_of_folders:
现在,我想根据文件夹中的文件数量对文件夹列表进行排序。差不多
list_of_folders.sort(key= lambda f: len(x) for x in glob.glob(f))
但不管我怎么做,我都不能得到一个有效的lambda表达式。如何根据文件夹中的文件量对文件夹列表进行排序 使用lambda d:len(os.listdir(d))
作为key
参数:
import glob
import os
list_of_folders = glob.glob('path_to_folder/*')
list_of_folders.sort(key=lambda d: len(os.listdir(d)), reverse=True)
:
sorted(glob.glob('path_to_folder/*'),key=lambda d:len(os.listdir(d)),reverse=True)
这几乎是正确的答案,但有一点需要考虑:
如果glob中返回的路径不是目录,则os.listdir()
将失败。为了克服这一问题,我们可以采取以下措施:
from glob import glob
import os
list_of_dirs = filter(os.path.isdir, glob('path_to_folder/*'))
list_of_dirs.sort(key=lambda d: len(os.listdir(d)), reverse=True)
或者我们可以做一行:
sorted(glob('path_to_folder/*/'), key=lambda d: len(os.listdir(d)), reverse=True)
它在结尾使用了一个额外的
/
来确保只返回目录,但这比第一个方法稍微不稳定(尽管它看起来更好一些)。排序(glob.glob('path\u to\u folder/*'),key=lambda d:len(os.listdir(d)),reverse=True)
@falsetru将你的评论作为答案。@falsetru我正要写同样的东西,但你把它放在这里(在我写之前),所以请作为答案。