我正在尝试加载(并直接保存在本地) FTP服务器(SFTP协议)上存储的.csv文件。我将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()发布于 2017-06-19 22:24:39
Connection.get不返回任何内容。它将远程文件下载到由localpath参数指定的本地路径。如果不指定参数,它会将文件下载到当前工作目录。
因此,如果您希望下载到特定的本地目录,则需要执行以下操作:
sftp.get('directory/file.csv', '/local/path/file.csv')如果你真的想把文件读到一个变量中(据我所知,你实际上并不想要),你需要使用Connection.getfo,如下所示:
flo = BytesIO()
sftp.getfo(remotepath, flo)
flo.seek(0)或者,直接使用Paramiko库(不使用pysftp包装器)。
参见Read a file from server with SSH using Python。
强制警告:请勿设置cnopts.hostkeys = None__,除非您不关心安全性。有关正确的解决方案,请参阅。
https://stackoverflow.com/questions/44632588
复制相似问题