FTP、SFTP文件下載內容校驗


 

描述:

從FTP、SFTP下載的文件做MD5碼校驗,文件名和MD5碼值存放在表格里,表格位置在FTP、SFTP服務器上。

os模塊只能遍歷本地目錄/文件,需要先連接FTP、SFTP服務器,將表格下載到本地localpath,再將localpath傳入exl_file_md5()函數,讀取表格內容

 

1、python連接FTP、SFTP遍歷目錄;

2、下載目錄下的Excel文件,並讀取Excel文件內容,獲取到Excel里的文件名和MD5碼值;

3、將表格中讀取出的內容以字典形式{filename:MD5}返回。

import paramiko
import xlrd
from ftplib import FTP

def sftp_down_exlfile(user,password,host,port,remotepath,localpath): t
=paramiko.Transport((host,int(port))) t.connect(username=user,password=password) sftp=paramiko.SFTPClient.from_transport(t) local_path="" for file in sftp.listdir(remotepath): if file[-5:]==".xlsx": sftp.get(os.path.join(remotepath+file),os.path.join(localpath+file)) local_path = os.path.join(localpath+file) t.close() data=exl_file_md5(local_path) return data def ftp_down_exlfile(user,password,host,port,remotepath,localpath): ftp=FTP() ftp.connect(host=host,port=int(port)) ftp.login(user=user,passwd=password) bufsize=1024 files=ftp.nlst(remotepath) ftp.cwd(remotepath)  # 切換目錄,注:切換到下載的文件的遠程目錄 for file in files: if file[-5:]==".xlsx": fp=open(localpath,'wb') ftp.retrbinary('RETR '+file, fp.write, bufsize) fp.close() ftp.close() data=exl_file_md5(localpath) return data def exl_file_md5(exlpath): """ read Excel filename and MD5code """ try: excel=xlrd.open_workbook(exlpath) sheet=excel.sheets()[1] nrows=sheet.nrows file_md5 = {} for i in range(nrows): file_md5[sheet.row_values(i)[1]] = sheet.row_values(i)[2]return file_md5 except Exception: pass

 


免責聲明!

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



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