直接从SFTP服务器将文件上传到Box,而无需使用Python保存中间文件

时间:2020-02-20 12:33:06

标签: python file-upload sftp paramiko

sftp.get(remotepath, localpath) #for sftp to localdrive
upload = client.folder(Folder_id).upload(localpath) #localdrive to box

使用Python,我正在将文件从SFTP服务器下载到本地驱动器,然后从本地驱动器下载到我的盒子。

是否可以使用Python直接从SFTP服务器将文件上传到Box,而无需将文件保存到本地驱动器?

我正在使用Paramiko和Box SDK

1 个答案:

答案 0 :(得分:2)

您可以使用SFTPClient.open在SFTP服务器上打开文件,就好像它是本地文件一样。它返回一个类似文件的对象。然后可以将对象与Folder.upload_stream一起使用:

with sftp.open(remotepath, "rb") as flo:
    flo.prefetch()
    client.folder(folder_id).upload_stream(flo, file_name)

有关SFTPFile.prefetch的电话,请参考:
Reading file opened with Python Paramiko SFTPClient.open method is slow