在linux和windows之间使用pysftp.get_r传输文件

时间:2017-04-19 16:19:39

标签: python linux windows python-3.x pysftp

我想以递归方式将文件从Linux服务器下载到Windows桌面。 我使用以下代码:

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()

我遇到了以下错误(递归复制文件时):

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机器上工作并且斜杠应该是反斜杠这一点并不明智。< / p>

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

目前,pysftp不支持此类功能。

我会推荐Python的default FTP library,它已经在标准库中(batteries included)。在那里,您可以拨打retrbinary()给出所需的文件夹。