首页 > 解决方案 > 按日期排序 SFTP 文件

问题描述

我正在连接到带有文件列表的 sftp 文件夹。我需要按日期订购这些并提取最新的两个。

filepath= "/test/sftp/files/"
localpath= "C:/myfiles/"

os.get(filepath, localpath)

我可以使用 os.get 提取所有文件,但我尝试了 os.listdir 但这并没有按我需要的日期排序。我查看了操作系统库,但找不到按日期订购的东西。

标签: pythonsftp

解决方案


除了listdir仅给出远程文件的名称之外,paramiko 还提供了一种listdir_attr方法,该方法返回SFTPAttributes包含文件名的列表以及st_mtime字段(以及其他)。您只需在该st_mtime字段上对该列表进行排序,即可获取按(修改)日期排序的文件列表:

client = paramiko.client.SSHClient()
client.connect(...)                       # use your connection parameters here
sftp = client.open_sftp()
remote_files = [x.filename for x in sorted(sftp.listdir_attr(), key = lambda f: f.st_mtime)]

推荐阅读