Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Paramiko从SFTP服务器下载最新文件而不使用循环?_Python_Python 3.x_Sftp_Paramiko - Fatal编程技术网

Python 如何使用Paramiko从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协议

我正在尝试从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协议更好的方法了。”