我看到了一个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()
但我怎么能上传,并在同一时间压缩呢?需要明确的是,我不希望压缩,然后上传它,我想让它在使用压缩数据流同时进行。
要通过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())
,复制流,因为从存储器读取表示没有数据将被写入消耗流。