基於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)  # 下載

 代碼實現了遠程連接服務器,輸入本地路徑,就會自動下載需要的壓縮文件,比可視化工具更快捷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM