当尝试从sftp下载文件时,我通过paramiko连接到一个文件夹,在该文件夹中,我需要按时间排序并下载最新的2个文件。使用st_atime
属性,我可以做到这一点,但是,当尝试使用sftp.get()
下载文件时,会失败。
files = s.sftp.listdir_attr(path)
files.sort(key=lambda f: f.st_atime, reverse=True)
localpath = localdir + files
s.sftp.get(files[0], localpath)
文件将以
格式返回4个文件file[0]
file[1]
file[2]
file[3]
当尝试使用sftp.get()
下载这些文件时,将返回以下错误消息:
raise TypeError("Expected unicode or bytes, got {!r}".format(s))
TypeError: Expected unicode or bytes, got SFTPAttributes: [ size=3017 uid=7129 gid=8001 mode=0100644 atime=1558001085 mtime=1558001084
对文件进行排序后,我需要将它们转换为某种格式以便成功下载它们
答案 0 :(得分:0)
file [0]是一个对象,您必须输入文件名:
s.sftp.get(files[0].filename, localpath)
请参阅:How to download only the latest file from SFTP server with Paramiko?