我看到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()
但是我怎样才能同时上传和压缩它?为了清楚起见,我不想将其压缩然后上传,我想使用压缩流同时制作它。
答案 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())
并复制流,因为读取会消耗内存中的流,这意味着不会写入任何数据。