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

标签 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 机器上工作并且斜线应该是反斜线这一事实并不明智。

如何解决?

最佳答案

目前,pysftp 不支持此功能。

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

关于python - 在 linux 和 windows 之间使用 pysftp.get_r 传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501106/

相关文章:

python - 如何只添加一个文件到 zip 而不是在 Python 中指向它的文件夹路径?

2个列表之间的Python区别

python - 读取包内的csv文件

c - linux中libc如何修改CS寄存器

c++ - VS2015 的多处理器编译在运行 cl.exe 时产生 "not enough quota is available to process this command"

windows - 在 Windows 中重新加载 Mojolicous 服务器

python - 从 Python 执行存储过程

linux - Mono如何删除与正则表达式匹配的文件

r - 如何在 Linux 服务器上使用 Rselenium

c++ - Windows:C++:从文件重定向到串口(输入)