美文网首页
Python 检测下载 JPG文件是否完整

Python 检测下载 JPG文件是否完整

作者: 夙小叶 | 来源:发表于2023-01-02 18:30 被阅读0次
截屏2023-01-02 18.29.52.png

问题

文件下载不完整,图片下载半截灰色图块,zip 损坏。

通过对比本地文件子节与 requests.content 时常不起作用

解决

仅对比 jpg/jpeg/png/gif/zip

通过检查文件尾部固定子节来判断是否下载完整。不是所有文件的尾部都有固定子节

def check_integrality(filename: str) -> bool:
    """检查下载项完整性"""
    with open(filename, "rb") as f:
        f.seek(-30, 2)
        hex_end = f.read()

    suffix = filename.split(".")[-1].lower()
    if suffix == "jpg" or suffix == "jpeg":
        return hex_end.endswith(b"\xff\xd9")
    if suffix == "png":
        return hex_end.endswith(b"\x49\x45\x4e\x44\xae\x42\x60\x82")
    if suffix == "gif":
        return hex_end.endswith(b"\x00\x3b")
    if suffix == "zip":
        # 504b0506
        return b"\x50\x4b\x05\x06" in hex_end

相关文章

网友评论

      本文标题:Python 检测下载 JPG文件是否完整

      本文链接:https://www.haomeiwen.com/subject/ewbccdtx.html