使用pysftp下载文件

Den*_*tes 8 python sftp pysftp

我正在尝试加载(并直接保存在本地).csv存储在FTP服务器(SFTP协议)上的文件.我正在将Python与pysftp库结合使用.当我检查文件是否存在时,它返回TRUE.但是在尝试加载文件时,无论我尝试什么,它似乎都是空的.

如何将文件存入(并存储)到我的本地环境?我想念一些明显的东西吗?

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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 15

Connection.get没有任何回报.它将远程文件下载到localpath参数指定的本地路径.如果未指定参数,则会将文件下载到当前工作目录.

所以你想要这个:

sftp.get('directory/file.csv', '/local/path/file.csv')
Run Code Online (Sandbox Code Playgroud)

如果你真的想要将文件读取到变量(我理解你实际上不需要),你需要使用Connection.getfo,如:

flo = BytesIO()
sftp.getfo(remotepath, flo)
Run Code Online (Sandbox Code Playgroud)

或者,直接使用Paramiko库(不使用pysftp包装器).
参阅使用python从ssh读取服务器中的文件.