Python:如何通过zip流将文件上传到SFTP

时间:2017-12-05 16:45:13

标签: python stream zip

我看到example如何将文件上传到SFTP

import pysftp

srv = pysftp.Connection(host="www.destination.com", username="root",
password="password",log="./temp/pysftp.log")

with srv.cd('public'): #chdir to public
    srv.put('C:\Users\XXX\Dropbox\test.txt') #upload file to nodejs/

# Closes the connection
srv.close()

但是我怎样才能同时上传和压缩它?为了清楚起见,我不想将其压缩然后上传,我想使用压缩流同时制作它。

1 个答案:

答案 0 :(得分:0)

要通过pysftp流式传输文件,请执行以下操作:

import pysftp
import io

with io.StringIO("hello world!\r\n") as stream:
    with pysftp.Connection("sftp.mywebsite.com", username="myuser", password="mypassword") as sftp:
        with sftp.cd("myhome/uploads"):
            sftp.putfo(stream, "hello.txt", confirm=False)

confirm设置为False将告诉pysftp 验证文件的长度。如果您需要在pysftp中使用file_size来验证文件的长度,那么您将需要说len(secondstream.read())并复制流,因为读取会消耗内存中的流,这意味着不会写入任何数据。