2015-02-24 776 views
0

尝试在paramiko中使用sftp从windows服务器下载一些文件。获得方法是:python paramiko在使用sftp的windows服务器上给出错误“Permission denied [Errno 13]”使用sftp

def get(self, remotepath, localpath = None): 
    """Copies a file between the remote host and the local host.""" 
    if not localpath: 
     localpath = os.path.split(remotepath)[1] 
    self._sftp_connect() 
    self._sftp.get(remotepath, localpath) 

在运行该脚本 sshObj.get('C:\\my_file.txt', 'D:\\python\\'),它抛出的错误:

File "C:\Py34\lib\site-packages\paramiko\sftp_client.py", line 806, in _convert_status 
raise IOError(errno.EACCES, text)`PermissionError: [Errno 13] **Permission denied**` 

我已经给所有的文件夹的权限。 也与其他用户分享。但仍然存在错误。如果有人遇到过这种情况,任何线索都会有帮助。

注意:我安装了freesshd让我的localbox成为ssh服务器。

+1

使用SFTP,您需要在远程路径中使用正斜杠(即使连接到Windows服务器)。还要了解SFTP服务器用于引用驱动器的路径的语法。 – 2015-02-25 06:53:42

+0

谢谢你的回复。试着用'sshObj.get(r'C:\ my_file.txt',r'D:\ python \ my_file.txt')'但它不会帮助..仍然有同样的错误。还有Martin,'什么语法SFTP服务器用于引用驱动器的路径的路径=>如何检查?语法'E:/'应该是正确的。 – Pankaj 2015-02-25 07:50:03

回答

2

谢谢大家! 最后我找到了答案。 这是因为文件路径的格式。

在尝试sshObj.get("/remote_file.txt","C:/tmp/local_file.txt")它成功没有任何错误。

下载工具winSCP,它有一个很好的GUI,它可以帮助你正确理解文件路径的格式。

同时检查远程计算机上的SFTP基本文件夹,因为在我的情况下,由于remote_file.txt未位于远程计算机上的根sftp文件夹(可以手动配置)上,所以引发错误。

+0

如果你喜欢我的回答,请接受它(点击✓标记)。谢谢! – stanleyxu2005 2015-02-26 06:41:40

0

当你设置了freesshd时,你想要得到的文件应该位于freesshd服务的主目录中。我想象的远程路径应该是类似/path/to/file

根据你的代码片段,你想从c:\\my_file.txt得到文件。至少有两个问题:

  1. 类POSIX文件系统使用/并且没有驱动器路径。 C:\将永远不会工作。
  2. C:\您的freessdh可以访问吗?我怀疑。
相关问题