2

IOError: [Errno 2] No such file当我尝试从远程服务器上获取文件时,我遇到了 paramiko 的问题。这是我的代码:

# set up a transport object t (using an rsa key), which connected successfully
>>> t.is_active()
True
>>> sftp = paramiko.SFTPClient.from_transport(t)
>>> files = sftp.listdir()  # files holds the list ['canceled', 'downloaded', 'FILE.06222012.TXT']
>>> sftp.get(files[2], '.')
IOError: [Errno 2] No such file

但是,当我在命令行上连接到 sftp 时(作为我打开 python repl 的同一用户),我可以获得该文件。有任何想法吗?

编辑:我发现这篇文章似乎是我遇到的问题https://bugs.launchpad.net/paramiko/+bug/492238 在交互式 sftp 提示符中:

sftp> df -hi
Server does not support statvfs@openssh.com extension

这个错误来自 2009 年并且没有关闭(但我使用的是最新的 paramiko 1.7.7.1)。有人知道解决方法吗?我可以强制 paramiko 只做相当于普通 sftp get 的操作,而不尝试检查文件完整性吗?

4

2 回答 2

0

I had the same issues, however, I did not run into problems because of sftp and df. Make sure to give a proper filename for localpath!

sftp.get(files[2],'file2.txt')
于 2013-05-22T14:38:17.443 回答
0

无论如何,这可能最终会调用stat(),但您可以尝试使用 STFPClient.open()which 返回一个SFTPFile实例。然后调用它的read()方法来获取文件的内容。所以,像这样:

sftp = paramiko.SFTPClient.from_transport(t)
files = sftp.listdir()  # files holds the list ['canceled', 'downloaded', 'FILE.06222012.TXT']
remote_file = sftp.open(files[2])
with open(files[2], 'w') as local_file:
    local_file.write(remote_file.read())
remote_file.close()
于 2012-06-26T01:10:15.727 回答