19

我编写了一个简单的代码来将文件上传到 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')

4

3 回答 3

35

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

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

于 2015-11-17T08:53:16.280 回答
7
import pysftp

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

  sftp.cwd('/root/public')  # The full path
  sftp.put('C:\Users\XXX\Dropbox\test.txt')  # Upload the file

不需要sftp.close(),因为连接会在 with-block 结束时自动关闭

我对cdto做了一个小改动cwd

句法 -

# sftp.put('/my/local/filename')  # upload file to public/ on remote
# sftp.get('remote_file')         # get a remote file
于 2020-04-27T05:49:56.943 回答
0

使用作为上下文管理器将关闭连接。不需要显式使用 srv.close()

于 2021-11-11T21:49:47.560 回答