Python 如何使用Paramiko从SFTP服务器下载最新文件而不使用循环?
我正在尝试从SFTP服务器获取最新的文件,而不使用循环,因为目录中的文件数量有数千个(而且还在增加)。文件名采用以下格式:Python 如何使用Paramiko从SFTP服务器下载最新文件而不使用循环?,python,python-3.x,sftp,paramiko,Python,Python 3.x,Sftp,Paramiko,我正在尝试从SFTP服务器获取最新的文件,而不使用循环,因为目录中的文件数量有数千个(而且还在增加)。文件名采用以下格式:filename\u date.xml(其中filename可以是任何名称,date的格式为yyyymmdd\u hh.mm.ss) 根据文档listdir()和listdir\u attr()以任意顺序返回所有文件的列表,因此这没有多大帮助 编辑: 除此之外,我无法执行shell命令,如果我尝试使用exec\u命令运行脚本,我得到此服务仅允许sftp连接。使用纯sftp协议
filename\u date.xml
(其中filename
可以是任何名称,date
的格式为yyyymmdd\u hh.mm.ss
)
根据文档listdir()
和listdir\u attr()
以任意顺序返回所有文件的列表,因此这没有多大帮助
编辑:
除此之外,我无法执行shell命令,如果我尝试使用
exec\u命令运行脚本,我得到此服务仅允许sftp连接。
使用纯sftp协议没有更好的方法
有关实现示例,请参见:
您必须使用另一个接口来检索最新文件的名称
例如,如果您具有shell访问权限:
- 您可以使用一些智能命令,如:
- 用Paramiko执行它:
- 然后使用获得的名称下载SFTP
或者,您可以在服务器上创建返回最新文件名的web服务(网页)。这不是paramiko限制,而是SFTP限制。请参阅处的规范--它记录的操作是所有存在的操作。如果控制服务器,只需让它维护到最新文件的符号链接;与设置网页相比,麻烦要小得多,并且只通过一个协议保存所有内容(如果我们正在使用SFTP子系统的SSH服务器配置为不支持shell
或exec
请求,这是相关的)。不幸的是,我只能运行SFTP命令,尝试执行shell命令返回此服务仅允许sftp连接。
好,那么我的第一句话是:“没有比使用纯sftp协议更好的方法了。”