Paramiko 得到排序的目录列表

efu*_*ltz 3 python sftp paramiko

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

Mar*_*ryl 5

没有办法让SFTPClient.listdir_attr返回一个排序的列表。

排序很容易:

files = sftp.listdir_attr()
files.sort(key = lambda f: f.filename)
Run Code Online (Sandbox Code Playgroud)

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

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