我正在尝试理解为什么在使用paramiko 1.7.6时会出现“权限被拒绝”的错误。

3

有人能告诉我为什么会出现以下错误:

Traceback (most recent call last):
  File "C:\Python27\connect.py", line 22, in <module>
    sftp.get(filepath, localpath)
  File "C:\Python27\lib\site-packages\paramiko-1.7.6-py2.7.egg\paramiko\sftp_client.py", line 603, in get
    fl = file(localpath, 'wb')
IOError: [Errno 13] Permission denied: 'C:\\remote'

我正在使用 Windows 7 上的 Python 2.7 (以管理员身份) 登录到一个 Ubuntu 10.10 的机器上。以下是我正在使用的非常简单的脚本:

import paramiko
import os




paramiko.util.log_to_file('c:\Python27\paramiko-wininst.log')

host = '192.168.1.14'
port = 22
transport = paramiko.Transport((host,port))
password = 'xxxxxx'
username = 'username'
transport.connect(username = username, password = password)

sftp = paramiko.SFTPClient.from_transport(transport)



filepath = '/home/my.log'
localpath = 'C:\\remote'
sftp.get(filepath, localpath)


sftp.close()
transport.close()

1
我不是100%确定,但是你不是必须右键单击要运行的脚本,然后点击“以管理员身份运行”或类似的选项吗?(即使您的用户具有管理员权限) - thomasa88
2
@thomasa88 - 不,只要您在管理员会话中,'full-control' 权限应该被授予。在我的电脑上,使用 Py 脚本时,右键单击 ->“以管理员身份运行”不是可用选项。 - suffa
2
@user706808 也许问题在于你的localpath是一个目录而不是文件。如果这不是问题,你是否尝试在Python脚本中手动写入到c:\remote文件中?你是否尝试指定另一个目录? - thomasa88
1
@thomasa88 - 就是这样...需要创建一个文件而不仅仅是一个本地目录。 - suffa
1个回答

5
尝试进行以下更改。
localpath = 'C:\\remote'
sftp.get(filepath, localpath)

把它修改为
localpath = 'C:\remote\my.log'
sftp.get(filepath, localpath)

这对我起作用了,尽管我不需要将本地路径变成单斜杠。 - walker_4

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