5

我正在尝试从 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"

如您所见,我已经尝试了所有不同的方法来复制文件,但是到目前为止我还没有运气。

4

2 回答 2

3

问题是您试图将文件保存为目录,至少根据我的经验,这是Permission Deniedpysftp.

更改这行代码:

localpath="C:\\new project\\new"

对此:

localpath="C:\\new project\\new\\infso.txt"

注意:infso.txt可以是您想要命名正在下载的本地文件的任何名称。为了对称和简单,我在这里使用了与您示例中的远程文件名称相同的名称。

于 2018-11-09T23:53:47.263 回答
0

有几件事可能会导致您的问题,但对我来说最突出的是您的错误消息:

IOError: [Errno 13] Permission denied: "C:\\new project\\new"

可能是您需要转义空格 ( "\ ") 或将其放入原始字符串中r"C:\My Path With Spaces"

但无论如何,我会避免在文件名中使用空格,并且您应该将项目文件夹重命名为new_projectnewproject.

另一件让您的生活更轻松的事情是,如果您将目录压缩成一个存档文件(.tgz或其他文件.zip)并传输文件。

于 2017-10-10T20:33:01.823 回答