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

如何用Python从十六进制字符串解压Zip格式XML文件?

解决Zip解压时的BadZipFile错误:十六进制字符串转二进制数据处理
  • 错误根源:你当前的代码用io.StringIO处理十六进制字符串,但zipfile.ZipFile仅支持二进制流输入,且十六进制字符串本身不是Zip的原始二进制数据,必须先完成格式转换。

  • 正确处理步骤:

    1. 使用bytes.fromhex()将十六进制字符串解码为Zip格式对应的二进制字节
    2. 用io.BytesIO包装二进制字节,生成符合要求的二进制流
    3. 传入zipfile.ZipFile进行解压操作

完整代码示例:

import zipfile
import io

original_zip_data = "504B030414..."  # 你的十六进制字符串
# 十六进制字符串转二进制字节
zip_bytes = bytes.fromhex(original_zip_data)
# 生成二进制流对象
file_stream = io.BytesIO(zip_bytes)

try:
    with zipfile.ZipFile(file_stream, 'r') as myzipfile:
        # 打印压缩包内的文件名称列表
        print("压缩包内文件:", myzipfile.namelist())
        # 读取并解析XML文件(替换为你实际的文件名)
        with myzipfile.open("你的文件名.xml") as xml_file:
            xml_content = xml_file.read().decode('utf-8')
            print(xml_content)
except zipfile.BadZipFile:
    print("转换后仍无法识别为有效Zip文件,可能原始十六进制字符串已损坏、截断或本身不是Zip格式数据")
  • 额外说明:开头的504B对应Zip文件的签名PK,说明原始数据大概率是Zip格式,但如果转换后仍报错,需检查十六进制字符串是否完整、是否存在字符错误(比如非十六进制字符)。

内容的提问来源于stack exchange,提问作者NScara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:42:44