2015-02-24 222 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可以訪問嗎?我懷疑。
相關問題