Python SFTP:使用SFTP将内存流放入远程文件夹。类似于Ftp Stor二进制

2022-04-04 00:00:00 python sftp

问题描述

我在使用Python中的paraMiko。我需要SFTP一个文件到一个远程的Linux机器(开发平台是Windows)。以下是代码(正在运行)

import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(HOST, username=USERNAME, password=PASSWORD)
stdin, stdout, stderr = client.exec_command("cd %s; pwd" % PATH)
data = stdout.readlines()
print "Current folder:"
for line in data:
    print (line.rstrip())
sftp = client.open_sftp()
sftp.put(local_path, PATH + '/' + FILE_NAME, confirm = True)

sftp.close() 
client.close()

这运行得很好。但要调用Put(),我需要将文件保存到LOCAL_PATH,这需要很长时间。

我想知道是否有一种方法可以像ftp一样在内存流中使用sftp。 对于ftp,使用In Memory Stream(工作中)速度更快:

import ftplib
ftp_conn = ftplib.FTP(HOST, USERNAME, PASSWORD)
ftp_conn.cwd(FILE_PATH)
ftp_conn.storbinary('STOR '+posixpath.basename(FILE_PATH), buffer, blocksize=1024)
ftp_conn.close()

非常感谢!


解决方案

现在可以使用类似文件的对象: http://docs.paramiko.org/en/stable/api/sftp.html#paramiko.sftp_client.SFTPClient.putfo

相关文章