2017-06-19 98 views
2

我試圖加載(並直接保存在本地)存儲在FTP服務器(SFTP協議)上的.csv文件。我使用Python與pysftp庫結合使用。當我檢查文件是否存在時,它返回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