我试图从SFTP服务器复制文件。 我可以使用python pysftp连接。 我可以跑:
data = srv.listdir()
for i in data:
print I
我获得了目录列表。但是当我尝试
时sftp.put (localpath,"file_name.txt")
我得到了
" IOError:[Errno 13]权限被拒绝:' C:\ ....."
我有权访问该文件夹,因为我可以运行MKDIR并在该文件路径中创建一个目录。我尝试了许多不同的方法,但到目前为止没有运气,任何帮助都是真正的赞赏。
import pysftp
import os
def sftpExample():
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection('HOST', username='username', password='Password', cnopts=cnopts) as sftp :
print 'connected '
localpath="C:\\new project\\new"
remotepath="/folder1"
sftp.put(localpath,"infso.txt")
sftp.put(localpath,remotepath)
sftp.getfo (remotepath, localpath )
srv.get_r(localpath, remotepath)
srv.close()
sftpExample()
我收到此错误代码:
Traceback (most recent call last):
File "db_backup.py", line 42, in <module>
sftpExample()
File "db_backup.py", line 17, in sftpExample
sftp.put(localpath,"GT-Dallas SFTP infso.txt")
File "c:\Python27\lib\site-packages\pysftp\__init_.py", line 364, in put
confirm=confirm)
File "c:\Python27\lib\site-packages\paramiko\sftp_client.py", line 720, in put
with open(localpath, 'rb') as fl:
IOError: [Errno 13] Permission denied: "C:\\new project\\new"
我已经尝试了所有不同的方法来复制文件,但是到目前为止我还没有运气。
答案 0 :(得分:0)
可能会有一些问题导致您的问题,但对我来说突出的问题来自您的错误消息:
IOError: [Errno 13] Permission denied: "C:\\new project\\new"
可能需要转义空格("\ "
)或将其放入原始字符串r"C:\My Path With Spaces"
但无论如何,我会避免在文件名中使用空格,您应该将项目文件夹重命名为new_project
或newproject
。
如果您将目录压缩到单个存档文件(.tgz
或.zip
或其他内容)并传输 文件,那么另一件会让您的生活更轻松的事情就是。< / p>
答案 1 :(得分:0)
问题是,您试图将文件另存为目录,至少以我的经验,这是在Permission Denied
中引发pysftp
错误的原因。
更改此行代码:
localpath="C:\\new project\\new"
对此:
localpath="C:\\new project\\new\\infso.txt"
注意:infso.txt
可以是您要命名要下载的本地文件的任何名称。为了对称和简单起见,我在此处使用的示例名称与远程文件的名称相同。