paramiko sftp.get 方法

2 投票
1 回答
9706 浏览
提问于 2025-04-17 09:12

我正在尝试使用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连接到一个被限制的SFTP客户端。这个文件'file_name'位于我客户端的根目录下。

  • 我不明白为什么会出现这个错误,显示的似乎是我客户端服务器的完整路径(在限制外)。
  • 我不知道为什么我的测试文件没有被下载 :O

如果需要,我会提供任何必要的信息。

1 个回答

6

以下代码在我的Ubuntu 11.10系统上运行得很好:

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

我只做了几个小改动,这些改动应该不会影响到你的问题:

  • localpath:我用了文件的完整路径,而不是简单地用'.'(因为目录是不允许的)
  • callback:把它去掉了,因为None已经是默认值,其实不需要这个

由于我没有遇到你在remotepath参数上遇到的错误,我猜可能是你用的sftp服务器和我用的不同,行为也不一样。

我的建议是:

  • 用其他客户端验证一下,比如用sftp命令,确认一下你要找的文件确实在你想要的位置。
  • 使用sftp.chdir来确保当前使用的默认目录是你预期的那个。

希望这些能帮到你。

撰写回答