使用Python(pysftp)将文件上传到SFTP失败,并显示“无此文件”

时间:2019-08-29 16:54:39

标签: python file-upload sftp paramiko pysftp

我正在尝试将CS​​V文件从本机上传到SFTP服务器。我不知道为什么我的代码无法找到该文件。需要一点帮助来确定问题。这是我的代码

import pysftp as sftp
def sftpExample():
    try:
        cnopts = sftp.CnOpts()
        cnopts.hostkeys = None
        s = sftp.Connection(host='abc.net', username='xyz', password='aaaaaaaaaaaa',cnopts=cnopts)

        remotepath = 'http://sftp.abc.net/uploads/'
        localpath = '/Users/ashish.verma/Desktop/Text.rtf'
        s.put(localpath,remotepath)

        s.close()

    except Exception as e:
        print(e)
sftpExample()

与SFTP服务器的连接成功,但是我不知道为什么我的代码无法在本地计算机上找到文件。错误消息说:

  

没有这样的文件

1 个答案:

答案 0 :(得分:2)

pysftp Connection.put methodremotepath参数是文件路径。不是目录URL ,只允许 HTTP URL。

应为:

remotepath = '/uploads/Text.rtf'
s.put(localpath, remotepath)

或者,您可以省略该参数,使pysftp以原始文件名(取自localpath)将文件上传到当前的远程工作目录:

s.cd('/uploads')
s.put(localpath)

强制性警告:除非您不关心安全性,否则请不要设置cnopts.hostkeys = None。有关正确的解决方案,请参见Verify host key with pysftp