You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:25:26