Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对文件夹中大多数项目的文件夹列表进行排序_Python_Sorting - Fatal编程技术网

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我正要写同样的东西,但你把它放在这里(在我写之前),所以请作为答案。