Python中的Pysftp出现[Errno 13]权限被拒绝错误:

5

我正在尝试从SFTP服务器复制文件。 我可以使用Python pysftp进行连接。 我可以运行:

data = srv.listdir()
for i in data:
    print I

我获取了目录列表。但是当我尝试时

sftp.put (localpath,"file_name.txt")

我得到
>"IOError: [Errno 13] Permission denied: '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"

我已经尝试了各种不同的方式来复制这个文件,但到目前为止都没有成功。

2个回答

3
问题在于你试图将文件保存为一个目录,至少在我的经验中,这是导致pysftp出现Permission Denied错误的原因。
更改以下代码行:
localpath="C:\\new project\\new"

转换为这样的格式:
localpath="C:\\new project\\new\\infso.txt"

注意: infso.txt 可以是你想要取的任何本地文件名称。我在这里使用了和远程文件相同的名称,以保持对称性和简单性。


0

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

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

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

但无论如何,我会避免在文件名中使用空格,并将项目文件夹重命名为new_projectnewproject之类的名称。

另一件可以让您的生活更轻松的事情是将您的目录压缩成单个归档文件 (.tgz.zip 或其他) 并传输那个文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接