当前位置 博文首页 > python实现自动下载sftp文件

    python实现自动下载sftp文件

    作者:Jepson2017 时间:2021-07-03 17:43

    本文实例为大家分享了python实现自动下载sftp文件的具体代码,供大家参考,具体内容如下

    实现功能:利用python自动连接sftp,并下载sftp中指定目录下的所有目录及文件

    • 系统环境:centos7
    • python版本:python3
    • 使用模块包:paramiko ,若未安装,可使用 pip install paramiko 进行安装

    需求实例:sftp中的文件如下

    将sftp根目录中的所有文件下载到本地 /data/test 目录中

    实现代码:

    #!/usr/bin/python
    # coding=utf-8
    
    import paramiko
    import os
    
    def sftp_download(sftp,localDir,remoteDir):
        if remoteDir.find(".") == -1:#判断远程目录参数是否是目录,前提是远程的文件名中都包含扩展名,否则此方法不可用
            for file in sftp.listdir(remoteDir):
                remoteDirTmp=os.path.join(remoteDir,file)
                localDirTmp=os.path.join(localDir,file)
                sftp_download(sftp,localDirTmp,remoteDirTmp)
        else:
            localPath=localDir.rpartition("/")[0]
            if not os.path.exists(localPath):
                os.makedirs(localPath)
            print("download file:",remoteDir)
            try:
                sftp.get(remoteDir,localDir)
            except Exception as e:
                print('download exception:',e)
        
        
    if __name__ == '__main__':
        host = '192.168.149.128'#sftp主机 
        port = 22 #端口
        username = 'sftp' #sftp用户名
        password = '123456'  
        localDir = '/data/test'#本地文件或目录
        remoteDir = '/'#远程文件或目录
        sf = paramiko.Transport((host,port))
        sf.connect(username = username,password = password)
        sftp = paramiko.SFTPClient.from_transport(sf)
        sftp_download(sftp,localDir,remoteDir)
        sf.close()
    jsjbwy
    下一篇:没有了