您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

来自Linux的Python pysftp get_r在Linux上工作正常,但在Windows上工作不正常

来自Linux的Python pysftp get_r在Linux上工作正常,但在Windows上工作不正常

实际上,pysftpget_r在Windows上不起作用。它对远程SFTP路径使用os.sepos.path起作用,这是错误的,因为SFTP路径始终使用正斜杠。

但是您可以轻松实现便携式替换:

import os
from stat import S_ISDIR, S_ISREG



def get_r_portable(sftp, remotedir, localdir, preserve_mtime=False):
    for entry in sftp.listdir_attr(remotedir):
        remotepath = remotedir + "/" + entry.filename
        localpath = os.path.join(localdir, entry.filename)
        mode = entry.st_mode
        if S_ISDIR(mode):
            try:
                os.mkdir(localpath)
            except OSError:     
                pass
            get_r_portable(sftp, remotepath, localpath, preserve_mtime)
        elif S_ISREG(mode):
            sftp.get(remotepath, localpath, preserve_mtime=preserve_mtime)

像这样使用它:

get_r_portable(sftp, '/abc/def/ghi/klm/mno', 'C:\\pqr', preserve_mtime=False)

旁注:不要 “禁用主机密钥检查” 。您正在失去抵御MITM攻击的保护。

python 2022/1/1 18:17:59 有387人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶