美文网首页
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