3
我在Python中使用paramiko。我需要一个SFTP文件到一个远程Linux机器上(开发平台是windows)。这里是代码(工作)Python SFTP:使用SFTP将内存流放入远程文件夹。像FTP storbinary
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,它具有更快的内存流(工作):
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()
非常感谢!
你应该能够调用['open'(http://docs.paramiko.org/en/1.15/api/sftp。 html#paramiko.sftp_client.SFTPClient.open)(而不是'put'),然后将数据写入生成的文件对象。没有临时文件系统文件需要。 – 2014-10-31 20:25:13
@AndrewMedico打开是用于打开远程文件,不是吗?我没有在远程linux框中的文件。谢谢 – Payson 2014-11-01 18:57:51
不,该文件不需要事先存在。 open调用将创建一个新的空文件,并让你将数据写入它(就像本地操作一样)。 – 2014-11-01 18:59:04