Paramiko 获取排序的目录列表

Paramiko get sorted directory listing

我可以从 Paramiko 获得目录列表。使用 listdir_attr 我得到了属性。但是,我需要按文件名对这个列表进行排序。如果它返回字典列表,我可以使用 lambda 进行排序。但是随着它返回 SFTPAttributes 的列表,除了创建一个包含我关心的数据的新字典列表并对该列表进行排序之外,我无法弄清楚如何进行排序。在这样做之前,有没有办法获得按文件名排序的目录列表?

无法使 SFTPClient.listdir_attr return 成为排序列表。

虽然排序很简单:

files = sftp.listdir_attr()
files.sort(key = lambda f: f.filename)

或者,例如,如果您只想按大小从大到小对文件进行排序:

from stat import S_ISDIR, S_ISREG
files = [f for f in files if not S_ISDIR(f.st_mode)]
files.sort(key = lambda f: f.st_size, reverse = True)