首页 > 解决方案 > 使用 pysftp 拆分 SFTP 目录中的文本文件

问题描述

我正在尝试使用 python pysftp 将大小为 100 MB(具有唯一行)的文本文件拆分为 10 个大小相同的文件,但我无法找到合适的方法。

请让我知道如何从 SFTP 目录读取/拆分文件并将所有文件放回 FTP 目录本身。

with pysftp.Connection(host=sftphostname, username=sftpusername, port=sftpport, private_key=sftpkeypath) as sftp:
    with sftp.open(source_filedir+source_filename) as file:
        for line in file:

<....................Unable to decide logic------------------>

标签: pythonsftppysftp

解决方案


您可能需要的逻辑如下:

  1. 由于您处于只读环境中,因此您需要将整个文件下载到内存中。

  2. 使用 Pythonio.StringIO()处理内存中的数据,就好像它是一个文件一样。

  3. 当您谈论行时,我假设您的意思是文件是 CSV 格式?您可以使用 Python 的csv库来解析文件。

  4. 首先使用 快速扫描文件csv.reader(),使用它来计算文件中的行数。然后,这可用于确定如何将文件拆分为相等数量的行,而不是仅以设置的字节数拆分文件。

  5. 知道行数后,重新打开数据(再次作为文件)并读取标题行。然后可以将其添加到您创建的每个拆分文件的第一行。

  6. 现在读取n行(基于您的总行数)。使用 acsv.writer()和 anotherio.StringIO()先写入标题行,然后将拆分的行写入内存。然后可以将其用于上传pysftp到服务器上的新文件,而无需访问实际的文件系统。

结果将是每个文件也将有一个有效的标题行。


推荐阅读