基于Python——实现远程下载sftp文件(只下载.zip文件)

【背景】远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动。今天就介绍一种使用python下载文件到本地的方法。

【代码实现】

 1 import paramiko   # paramiko模块,基于SSH用于连接远程服务器并执行相关操作
 2 import os
 3 
 4 
 5 def DownLoadFile(sftp, LocalFile, RemoteFile):  # 下载单个文件
 7     file_handler = open(LocalFile, 'wb')         # wb 以二进制格式打开文件写入
 8     print(file_handler)
 9     sftp.get(RemoteFile, LocalFile)  # 下载目录中文件
10     file_handler.close()
11     return True
12 
13 
14 def DownLoadFileTree(sftp, LocalDir, RemoteDir):  # 下载整个目录下的文件
15     if not os.path.exists(LocalDir):               # 如果本地文件夹不存在,则创建它
16         os.makedirs(LocalDir)
17     for file in sftp.listdir(RemoteDir):            #sftp.listdir()返回当前目录下清单列表
18         Local = os.path.join(LocalDir, file)        #os.path.join()用于拼接文件路径
19         Remote = os.path.join(RemoteDir, file)
20         if os.path.isdir(file):  # 判断是否是文件
21             if not os.path.exists(Local):           #对于文件夹:如果本地不存在,就创建该文件夹
22                 os.makedirs(Local)
23             DownLoadFileTree(sftp, Local, Remote)
24         else:  # 是文件
25             if os.path.splitext(Remote)[1] == '.zip':            #os.path.splitext(Remote)[1]获取文件扩展名,判断是否为.zip文件
26                 DownLoadFile(sftp, Local, Remote)       #下载文件
27     print "complete!"
 1 if __name__ == '__main__':
 2     host = '主机名'  # 主机
 3     port = 端口号# 端口
 4     username = '用户名'  # 用户名
 5     password = '密码'  # 密码
 6     client = paramiko.Transport((host, port))                  #连接服务器
 7     client.connect(username=username, password=password)
 8     sftp = paramiko.SFTPClient.from_transport(client)
 9     local = raw_input("please input the local path(eg.D:\\V1.6):")  #输入本地文件路径
10     remote = '/app/...'  # 远程文件或目录
11     DownLoadFileTree(sftp, local, remote)  # 下载

 代码实现了远程连接服务器,输入本地路径,就会自动下载需要的压缩文件,比可视化工具更快捷。

转载于:https://www.cnblogs.com/testxiaobai/p/10488712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值