Skip to main content
 首页 » 编程设计

python之paramiko sftp.get

2025年05月04日20sky-heaven

我正在尝试使用 paramiko 通过 SFTP 下载文件。我这样创建 SFTP 对象:

transport = paramiko.Transport((sftp_server, sftp_port)) 
transport.connect(username = sftp_login, password = sftp_password) 
sftp = paramiko.SFTPClient.from_transport(transport) 
sftp.get("file_name", '.', None) 

并且,我得到了异常:

Exception python : Folder not found: \\$IP_ADDRESS\folder_1/folder_2\file_name. 

我正在运行 paramiko 以连接到客户端 chrooted SFTP。文件“file_name”位于我客户的 chroot 的根目录下。

  • 我不明白为什么我会出现此错误,它显然显示了我客户服务器的完整路径(在 chroot 之外)。
  • 我不知道为什么我的虚拟文件不会被下载 :O

我会提供任何必要的信息。

请您参考如下方法:

以下代码在 Ubuntu 11.10 中对我有用:

sftp.get("file_name", "file_name") 

我只是做了一些应该不会影响您的问题的更改:

  • localpath:使用本地文件名的完整路径,而不仅仅是 '.'(不允许使用目录)
  • callback:将其删除,因为 None 已经是默认值,实际上并不需要它

由于我没有收到关于 remotepath 参数的相同错误,我猜您可能使用了具有不同行为的不同 sftp 服务器。

我的建议是:

  • 使用另一个客户端(例如 sftp 命令)验证您要查找的文件确实位于您要获取它的位置。
  • 使用 sftp.chdir 只是为了确保所使用的默认目录是您期望的目录。

希望对您有所帮助。