我有一堆看起来像这样的代码:
with tempfile.NamedTemporaryFile() as tmpfile:
tmpfile.write(fileobj.read()) # fileobj is some file-like object
tmpfile.flush()
try:
self.sftp.put(tmpfile.name, path)
except IOError:
# error handling removed for ease of reading
pass
是否可以执行这样的上载而不必将文件写到某个地方?
最佳答案
更新从Paramiko 1.10开始,您可以使用putfo:
self.sftp.putfo(fileobj, path)
除了使用
paramiko.SFTPClient.put
之外,您还可以使用paramiko.SFTPClient.open
,它会打开一个类似于file
的对象。您可以写。像这样的东西:f = self.sftp.open(path, 'wb')
f.write(fileobj.read())
f.close()
请注意,以32 KiB块的形式提供paramiko数据可能是值得的,因为这是SSH协议(protocol)可以处理的最大块,而不会将其分成多个数据包。
关于python - 使用Paramiko上传类似文件的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5914761/