Python 如何在不下载文件的情况下从 SFTP 服务器获取数据?

How to take data from SFTP server without downloading files in Python?

我有一个 SFTP 服务器。我可以通过 transferring/downloading 个文件获取数据。有什么办法可以不下载文件吗?

我的代码如下:

# Connection to the SFTP server
with pysftp.Connection(hostname, username, passowrd, port) as sftp:
    with sftp.cd('directory'):
        sftp.get('filename.txt')

此代码将文件下载到我的本地计算机。

是也不是。您可以使用来自远程(SFTP)服务器的数据,而无需将文件存储到本地磁盘。

但是如果不下载 就无法在本地使用数据。这不可能。您必须传输数据才能使用它们——至少传输到本地机器的内存中。

A way to load big data on Python from SFTP server, not using my hard disk

我的回答是关于 Paramiko 的。但是 pysftp 只是 Paramiko 的薄包装。它的 Connection.open is directly mapped to underlying Paramiko's SFTPClient.open。所以你可以继续使用pysftp:

with sftp.open('filename.txt', bufsize=32768) as f:
    # use f as if you have opened a local file with open()

尽管我建议您不要这样做: