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

Python压缩PDF为Zip上传Azure Blob后解压出现多余Zip文件问题

问题分析与解决方案

可能的成因

  1. 本地Zip文件验证缺失:你没有确认本地生成的Zip文件内容是否正常,若本地Zip本身就包含Zip副本,说明创建逻辑存在问题;若本地正常,则问题出在Azure Blob的上传/下载环节。
  2. item_name变量命名问题:如果item_name包含.zip后缀,会导致Zip内的PDF文件名形如xxx.zip.pdf,容易被误判为Zip文件副本。
  3. 解压操作误判:解压时可能将原Zip文件与解压出的PDF文件放在同一目录,误把原Zip当成了解压产物。
  4. 本地文件操作冗余:代码中先创建本地PDF再删除的步骤,可能因磁盘缓存或权限问题导致意外文件残留,干扰Zip生成。

解决方案

1. 先验证本地Zip内容

在上传前添加代码,解压本地生成的Zip并检查内容:

import zipfile

# 创建Zip后,添加验证步骤
with zipfile.ZipFile(f"{item_name}.zip", 'r') as zip_ref:
    file_list = zip_ref.namelist()
    print(f"Zip内文件列表: {file_list}")
    # 确认只有预期的PDF文件
    if len(file_list) != 1 or not file_list[0].endswith('.pdf'):
        print("Zip文件内容异常,终止上传")
        os.remove(f"{item_name}.zip")
        continue

2. 优化Zip生成逻辑(推荐)

跳过本地文件创建,直接在内存中生成Zip并上传,彻底避免本地文件操作的潜在问题:

from io import BytesIO

# 省略请求部分
if new_response.status_code == 200:
    print("got url response")
    try:
        # 内存中生成Zip
        zip_buffer = BytesIO()
        with zipfile.ZipFile(zip_buffer, 'w') as zip_file:
            zip_file.writestr(f"{item_name}.pdf", new_response.content)
        zip_buffer.seek(0)  # 重置指针到文件开头
        
        # 上传内存中的Zip到Blob
        container_client.upload_blob(name=f"{item_name}/{item_name}.zip", data=zip_buffer)
        print("upload successful")
        uploaded_items += 1
        
        # 上传metadata(修正缩进,确保在try块内)
        container_client.upload_blob(name=f"{item_name}/{item_name} metadata", data=json.dumps(result))
    except Exception as e:
        print('There was an error uploading the file: ')
        print(e)
        missed_items += 1
        continue

3. 检查item_name变量

添加打印语句确认item_name的值,避免包含特殊后缀:

print(f"当前处理的item_name: {item_name}")
# 确保item_name不包含.zip后缀
if '.zip' in item_name:
    item_name = item_name.replace('.zip', '')

4. 验证Azure Blob内容

登录Azure Portal,进入目标存储容器,查看{item_name}目录下的Blob:

  • 确认只有{item_name}.zip和{item_name} metadata两个文件
  • 手动下载{item_name}.zip并解压,验证内容是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:29:54