首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pysftp下载文件

使用pysftp下载文件
EN

Stack Overflow用户
提问于 2017-06-19 21:57:29
回答 1查看 40.2K关注 0票数 20

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

如何将文件获取(和存储)到我的本地环境?我遗漏了什么明显的东西吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-19 22:24:39

Connection.get不返回任何内容。它将远程文件下载到由localpath参数指定的本地路径。如果不指定参数,它会将文件下载到当前工作目录。

因此,如果您希望下载到特定的本地目录,则需要执行以下操作:

代码语言:javascript
复制
sftp.get('directory/file.csv', '/local/path/file.csv')

如果你真的想把文件读到一个变量中(据我所知,你实际上并不想要),你需要使用Connection.getfo,如下所示:

代码语言:javascript
复制
flo = BytesIO()
sftp.getfo(remotepath, flo)
flo.seek(0)

或者,直接使用Paramiko库(不使用pysftp包装器)。

参见Read a file from server with SSH using Python

强制警告:请勿设置cnopts.hostkeys = None__,除非您不关心安全性。有关正确的解决方案,请参阅。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44632588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档