Python 使用pysftp拆分SFTP目录中的文本文件

Python 使用pysftp拆分SFTP目录中的文本文件,python,sftp,pysftp,Python,Sftp,Pysftp,我试图使用pythonpystp将大小为100mb的文本文件(具有唯一的行)拆分为10个大小相同的文件,但我找不到合适的方法来处理相同的文件 请让我知道如何从SFTP目录读取/拆分文件,并将所有文件放回FTP目录本身 with pysftp.Connection(host=sftphostname, username=sftpusername, port=sftpport, private_key=sftpkeypath) as sftp: with sftp.open(source_f

我试图使用pythonpystp将大小为100mb的文本文件(具有唯一的行)拆分为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------------------>
将pysftp.Connection(主机=sftphostname,用户名=sftpusername,端口=sftpport,私钥=sftpkeypath)作为sftp:
使用sftp.open(source\u filedir+source\u filename)作为文件:
对于文件中的行:

我不认为FTP/SFTP比下载文件更聪明。也就是说,您必须获取整个文件,在本地拆分它,然后将新文件放回


对于文本文件拆分逻辑,我认为此线程可能有用:

您可能需要的逻辑如下:

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

  • 使用Python将内存中的数据当作文件来处理

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

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

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

  • 现在读取中的
    n
    行(基于总行数)。使用一个
    csv.writer()
    和另一个
    io.StringIO()
    首先写入标题行,然后将拆分的行写入内存。然后可以使用
    pysftp
    将其上载到服务器上的新文件,而无需访问实际的归档系统


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

    感谢Bensha的回复。这里的问题是,我正在尝试在Oracle云基础设施-函数(FaaS)中运行Python代码,这是一个只读环境,我无法将文件从FTP下载到本地环境。我唯一的选择是在运行时从FTP读取后拆分。非常感谢Martin。。。。。是的,这帮助了我,我能够从OCI-FaaS环境(碰巧是只读环境)向SFTP写入数据。我已将此标记为答案