2017-06-19 15 views
2

.csvファイルをFTPサーバー(SFTPプロトコル)に保存してロードしようとしていて、ローカルに直接保存しようとしています。私はpysftpライブラリと組み合わせてPythonを使用しています。ファイルが存在するかどうかをチェックするとTRUEを返します。しかし、ファイルをロードしようとすると、私は何をしようと、空であると思われます。pysftpでファイルをダウンロードする

ローカル環境にファイルを取得(および保存)するにはどうすればよいですか?明白な何かが恋しい?

import pysftp 

cnopts = pysftp.CnOpts() 
cnopts.hostkeys = None 

# Make connection to sFTP 
with pysftp.Connection(hostname, 
         username=sftp_username, 
         password=sftp_pw, 
         cnopts = cnopts 
         ) as sftp: 
    sftp.isfile('directory/file.csv')) ## TRUE 
    file = sftp.get('directory/file.csv') 
    print(file) ## None 

sftp.close() 

答えて

2

Connection.getは何も返しません。リモートファイルをlocalpath引数で指定されたローカルパスにダウンロードします。引数を指定しないと、ファイルは現在の作業ディレクトリにダウンロードされます。

だから、これ欲しい:あなたは本当に変数にファイルを読みたい場合は

sftp.get('directory/file.csv', '/local/path/file.csv') 

を(私はあなたが実際に望んでいないことを理解するもの)、あなたは同じように、.getfoを使用する必要があります。

flo = BytesIO() 
sftp.getfo(remotepath, flo) 

また、Paramikoライブラリを直接(pysftpラッパーなしで)使用してください。
Read a file from server with ssh using pythonを参照してください。

関連する問題