Python SFTP:使用SFTP将内存流放入远程文件夹,如FTP的storbinary
我在用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()方法时,我需要先把文件保存到本地路径,这样会花费很多时间。
我在想有没有办法像FTP那样,用内存流来进行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 个回答
1
你应该可以这样做:
import shutil
with sftp.open("/path/to/remote/file", mode="w") as remote_file:
shutil.copyfileobj(file_string_io, remote_file)