使用python通过sftp上传文件

时间:2015-11-17 08:03:00

标签: python python-2.7 sftp pysftp

我编写了一个简单的代码,用于将文件上传到python中的sftp服务器。我正在使用python 2.7

import pysftp

srv = pysftp.Connection(host="www.destination.com", username="root",
password="password",log="./temp/pysftp.log")

srv.cd('public') #chdir to public
srv.put('C:\Users\XXX\Dropbox\test.txt') #upload file to nodejs/

# Closes the connection
srv.close()

该文件未出现在服务器上。但是,没有出现错误消息。代码有什么问题?

编辑:我已启用日志记录。我发现文件上传到根文件夹而不是公共文件夹下。好像srv.cd('public')似乎不起作用。

2 个答案:

答案 0 :(得分:20)

我找到了自己问题的答案。

import pysftp

srv = pysftp.Connection(host="www.destination.com", username="root",
password="password",log="./temp/pysftp.log")

with srv.cd('public'): #chdir to public
    srv.put('C:\Users\XXX\Dropbox\test.txt') #upload file to nodejs/

# Closes the connection
srv.close()

srv.put放在srv.cd

答案 1 :(得分:3)

import pysftp

with pysftp.Connection(host="www.destination.com", username="root",
password="password",log="./temp/pysftp.log") as sftp:

  srv.cwd('/root/public'): #Write the whole path
  srv.put('C:\Users\XXX\Dropbox\test.txt') #upload file to nodejs/

没有srv.close(),因为连接在with块结束时自动关闭

我将cd更改为cwd

语法-

# sftp.put('/my/local/filename')  # upload file to public/ on remote
# sftp.get('remote_file')         # get a remote file