Python SFTP:使用SFTP将内存流放入远程文件夹。像FTP storbinary

时间:2014-10-31 19:45:02

标签: 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,这需要很长时间。

我想知道是否有办法像内存流一样在内存流中执行sftp。 对于FTP,它在内存流(工作)中的速度更快:

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

非常感谢!

2 个答案:

答案 0 :(得分:1)

你应该可以这样做:

import shutil

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

答案 1 :(得分:0)