| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 986 人关注过本帖
标题:实在不会了,救救孩子吧
只看楼主 加入收藏
python09
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-11-11
收藏
 问题点数:0 回复次数:0 
实在不会了,救救孩子吧
有大佬用过python的paramiko模块么,我在一个windows上装了freeSSHd,然后用paramiko模拟shh连接进行下载文件,但是有的中文名的文件能成功下载,有的报错,查找了许多资料都没解决,排查估计是sftp.listdir模块不能识别,但是我找不到能解决问题的办法,求求大佬们了,能指点指点孩子么
报错信息:UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 66-67: invalid continuation byte
这里是代码:
程序代码:
import paramiko
import os


def DownLoadFile(sftp, LocalFile, RemoteFile):  # 下载当个文件
    file_handler = open(LocalFile, 'wb')
    print(file_handler)
    sftp.get(RemoteFile, LocalFile)  # 下载目录中文件
    file_handler.close()
    return True


def DownLoadFileTree(sftp, LocalDir, RemoteDir):  # 下载整个目录下的文件
    if not os.path.exists(LocalDir):
        os.makedirs(LocalDir)
    for file in sftp.listdir(RemoteDir):
        Local = os.path.join(LocalDir, file)
        Remote = os.path.join(RemoteDir, file)
        if file.find(".") == -1:  # 判断是否是文件
            if not os.path.exists(Local):
                os.makedirs(Local)
            DownLoadFileTree(sftp, Local, Remote)
        else:  # 文件
            print(file)
            DownLoadFile(sftp, Local, Remote)
    return "complete"


if __name__ == '__main__':
    host = '192.168.0.190'  # 主机
    port = 22 # 端口
    username = 'YL123'  # 用户名
    password = '123456'  # 密码
    sf = paramiko.Transport((host, port))
    sf.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(sf)
    local = 'e:\sshtest'  # 本地文件
    remote = '/freeSSHd/P211027178Y/'  # 远程文件或目录
    DownLoadFileTree(sftp, local, remote)

搜索更多相关主题的帖子: if Local 文件 path file 
2021-11-12 10:15
快速回复:实在不会了,救救孩子吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067260 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved