2017-04-19 102 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

相关问题