远程下载发布包等文件时,总是要使用WinSCP等工具登陆拖动。今天就介绍一种使用python下载文件到本地的方法。
【背景】远程下载发布包等文件时,总是要使用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) # 下载
代码实现了远程连接服务器,输入本地路径,就会自动下载需要的压缩文件,比可视化工具更快捷。