2017-04-19 101 views
0

我想遞歸地將文件從Linux服務器下載到Windows桌面。 我使用下面的代碼:在linux和windows之間使用pysftp.get_r傳輸文件

import pysftp 
import sys 

cnopts = pysftp.CnOpts() 
cnopts.hostkeys = None 

with pysftp.Connection(host="192.168.1.1", username="user", password="secret", cnopts=cnopts) as sftp: 
    sftp.get_r ('test_sftp', 'C:\\Users\\user\\Desktop\\my_dir\\', preserve_mtime=False) 
    sftp.close() 

我已在encoutered以下錯誤(在遞歸複製文件):

Traceback (most recent call last): 
    File "blah.py", line 12, in <module> 
    sftp.get_r ('teste_sftp', 'C:\\Users\\user\\Desktop\\my_dir\\', preserve_mtime=False) 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pysftp\__init__.py", line 311, in get_r 
    preserve_mtime=preserve_mtime) 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pysftp\__init__.py", line 249, in get 
    self._sftp.get(remotepath, localpath, callback=callback) 
    File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\paramiko\sftp_client.py", line 720, in get 
    with open(localpath, 'wb') as fl: 
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\user\\Desktop\\my_dir\\test_sftp/n1/M51' 

據我所知,pysftp正試圖重新創建文件夾結構源文件放入目標文件夾,但是它在Windows機器上工作並且斜線應該是反斜槓並不明智。

如何解決它?

+0

你檢查了嗎? http://stackoverflow.com/questions/24427283/getting-a-files-from-remote-path-to-local-dir-using-sftp-in-python – Valilutzik

+0

@Valilutzik,我做到了。這似乎是一個系統權限問題,他也在paramiko中使用不同的功能。 – LuizAngioletti

回答

1

目前,pysftp不支持這種功能。

我會推薦Python的default FTP library,它已經在標準庫(batteries included)中。在那裏您可以撥打retrbinary()提供所需的文件夾。

+0

默認FTP庫不支持sftp,還是它? – LuizAngioletti

+0

它的確如此。 @LuizAngioletti –

+0

你能否提供一個關於如何使用SFTP和默認FTP庫的資源? SFTP和FTP是完全不同的,所以它不會讓它們存在於同一個庫中。 – Caleb

相關問題