使用python通过sftp上传文件

使用python通过sftp上传文件,python,python-2.7,sftp,pysftp,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.tx

我编写了一个简单的代码,用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')
不起作用。

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

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

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块结束时自动关闭

我用
cd
cwd

语法-

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

从你的描述有点难分辨。创建连接时设置
log='/tmp/pysftp.log'
,并调查日志文件。
ImportError:没有名为pysftp的模块
-我正在使用CentOS。如何在不破坏现有python2.7的情况下获得pysftp?@YumYumYum这意味着您需要下载module@YumYumYum
pip安装pysftp