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

私は同じ問題を抱えていましたが、sftp と df のために問題は発生しませんでした。localpathには適切なファイル名を指定してください。

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

とにかく、これはある時点で呼び出すことになるかもしれませんが、インスタンスを返す whichstat()を使用してみることができ ます。次に、そのメソッドを呼び出してファイルの内容を取得します。したがって、次のようなものです。STFPClient.open()SFTPFileread()

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 に答える