我可以从 Paramiko 获取目录列表。通过
listdir_attr
我得到了属性。但是,我需要按文件名对该列表进行排序。如果它返回一个字典列表,我可以使用 lambda 来进行排序。但是,随着它返回一个 SFTPAttributes
列表,除了创建一个包含我关心的数据的新字典列表并对该列表进行排序之外,我不知道如何进行排序。在此之前,有没有办法获取按文件名排序的目录列表?
SFTPClient.listdir_attr
返回排序列表。
排序很容易:
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)