使用pysftp下载文件
Downloading file with pysftp
我正在尝试加载(并直接在本地保存)存储在 FTP 服务器(SFTP 协议)上的 .csv
文件。我将 Python 与 pysftp 库结合使用。当我检查文件是否存在时,它 returns 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()
Connection.get
没有 return 任何东西。它将远程文件下载到由 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
,除非你不关心安全。有关正确的解决方案,请参阅 Verify host key with pysftp.
我正在尝试加载(并直接在本地保存)存储在 FTP 服务器(SFTP 协议)上的 .csv
文件。我将 Python 与 pysftp 库结合使用。当我检查文件是否存在时,它 returns 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()
Connection.get
没有 return 任何东西。它将远程文件下载到由 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
,除非你不关心安全。有关正确的解决方案,请参阅 Verify host key with pysftp.