/ / SFTP de Python: use SFTP para poner el flujo de memoria en una carpeta remota. Como FTP storbinary - python, sftp

Python SFTP: use SFTP para poner el flujo de memoria en una carpeta remota. Como FTP storbinary - python, sftp

Estoy usando paramiko en Python. Necesito un archivo SFTP a un cuadro de linux remoto (la plataforma dev es windows). Aquí están los códigos (trabajando)

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()

Esto está funcionando bien. Pero para llamar a put (), necesito guardar el archivo en local_path, lo que lleva mucho tiempo.

Me pregunto si hay una manera de hacer sftp en el flujo de memoria como ftp. Para FTP, es más rápido con el flujo de memoria (en funcionamiento):

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()

¡Muchas gracias!

Respuestas

0 para la respuesta № 1

Deberías poder hacer algo como esto:

import shutil

with sftp.open("/path/to/remote/file", mode="w") as remote_file:
shutil.copyfileobj(file_string_io, remote_file)