如何使用pysftp对FTP服务器下载的文件进行MD5校验
使用pysftp实现文件下载与MD5校验
1. 文件下载
在pysftp的连接上下文内,使用get()方法即可完成单文件下载,参数依次为远程文件路径和本地保存路径(可选,不填则默认保存到当前工作目录,文件名与远程文件一致)。若需下载整个目录,可使用get_r()方法递归下载。
2. 生成MD5校验和
借助Python内置的hashlib库即可计算文件MD5值,推荐分块读取大文件,避免内存占用过高。
完整示例脚本
import pysftp import hashlib def calculate_md5(file_path, chunk_size=4096): """计算文件的MD5校验和""" md5 = hashlib.md5() with open(file_path, 'rb') as f: while chunk := f.read(chunk_size): md5.update(chunk) return md5.hexdigest() # FTP连接配置 cnopts = pysftp.CnOpts() cnopts.hostkeys = None myHostname = "abc.org" myUsername = "username" myPassword = "password" remote_file_path = "/remote/path/to/your/file.txt" # 替换为实际远程文件路径 local_file_path = "./downloaded_file.txt" # 替换为本地保存路径 with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts) as sftp: print("连接已成功建立...") # 下载文件 print(f"开始下载文件: {remote_file_path}") sftp.get(remote_file_path, local_file_path) print("文件下载完成") # 计算并打印MD5校验和 file_md5 = calculate_md5(local_file_path) print(f"下载文件的MD5校验和: {file_md5}")
补充说明
- 需将
remote_file_path替换为目标远程文件的实际路径,local_file_path替换为本地存储路径。 calculate_md5函数采用分块读取逻辑,适配大文件校验场景,避免内存溢出。- 若需验证文件完整性,可通过
sftp.execute()在服务器端计算对应文件的MD5值,再与本地计算结果比对。
内容的提问来源于stack exchange,提问作者stack overflow
相关产品推荐
相关产品推荐

