在Python中使用pysftp下载大文件的块

问题描述 投票:0回答:1

我有一个用例,我只想读取我的 sftp 服务器之一中存在的大型 CSV 文件的前 5 行,并且我不想下载完整的文件来只读取前 5 行。我在 Python 中使用

pysftp
与我的 SFTP 服务器交互。我们有什么方法可以只下载文件的块而不是下载
pysftp
中的完整文件吗?

如果Python中有任何其他库或任何我可以使用的技术,请指导我。谢谢

python python-3.x sftp paramiko pysftp
1个回答
1
投票

首先,不要使用pysftp。这是一个没有维护的死项目。使用Paramiko 代替。请参阅 pysftp 与 Paramiko

如果要从文件中的特定点读取数据,可以使用 Paramiko

SFTPClient.open
方法(或等效的 pysftp
Connection.open
)打开表示远程文件的类文件对象,然后像使用它一样您正在从任何本地文件访问数据:

  • 使用
    .seek
    将读取指针设置为所需的偏移量。
  • 使用
    .read
    读取数据。
with sftp.open("/remote/path/file", "r", bufsize=32768) as f:
    f.seek(offset)
    data = f.read(count)

为了

bufsize
的目的,请参阅:
写入使用 Paramiko/pysftp“打开”方法打开的 SFTP 服务器上的文件很慢

© www.soinside.com 2019 - 2024. All rights reserved.