ChatGPT 读不到上传的 ZIP 压缩包内容:沙箱不会自动解压

丢一个 ZIP 进对话,ChatGPT 只看见文件名却读不到内容。修法:用明确的解压 prompt 触发 Data Analysis,或本地解压后单独上传。2026 年 6 月核实。

你把一个装了 30 个源文件的 project.zip 拖进对话,问”汇总一下里面的内容”——ChatGPT 要么说它打不开压缩包、要么把 ZIP 当成二进制 blob、要么干脆照着文件名瞎答。压缩包其实上传成功了;问题在于普通对话模式根本不跑代码,只有 Python 沙箱(现在在模型的工具菜单里叫 Data Analysis,以前叫 “Code Interpreter” / “Advanced Data Analysis”)才能真正解压 ZIP。

最快修法:在 GPT-5.5(截至 2026 年 6 月的默认模型)上,用一句明确指令开头——Use Python to unzip this file to /tmp/extracted and list every file with its size.(用 Python 把这个文件解压到 /tmp/extracted 并列出每个文件及大小)。这能稳定唤起 Data Analysis 工具并解压。如果还是不行,就在自己电脑上解压、改为上传单个文件。

先判断你属于哪一类

动手修之前先做一个快速探测。挂上 ZIP 后发一句:Run os.listdir("/mnt/data") in Python and print the result.(用 Python 跑 os.listdir 并打印结果)。返回的东西直接告诉你是哪个原因:

你看到的现象原因跳转
完全没有 Python 工具运行;只回一句”I can’t open archives”对话压根没唤起 Data Analysis原因 1 / 2
工具跑了,但找不到你的 ZIP 名、或显示 0 字节上传被过滤或被剥掉了原因 3
列出了 ZIP,但解压抛 BadZipFile / RarCannotExec / “encrypted”格式不对或带密码原因 4
解压开了头,然后 OSError: No space left on device压缩包超出沙箱磁盘原因 5

常见原因

1. 普通对话模式不跑代码

没开 Data Analysis(Python)工具,ChatGPT 不能执行 unzip。它能直接读上传的 TXT、PDF、DOCX、CSV,但 ZIP 是二进制、必须靠沙箱解压。在纯聊天里问”这个 zip 里有什么”,要么礼貌拒绝、要么编一个答案。

如何判断:没有 “Analyzing…” / “Working…” 指示器、回复里没有 Python 工具代码块——纯聊天模式。回复是泛泛的 “I can’t open archives” 而不是 Python traceback。

2. Data Analysis 在,但你没触发它

哪怕是 Plus、Go、Pro 账号,有时也得明说。一句含糊的”汇总这个 zip”可能被路由到轻量级的文件预览路径——只读元数据、不解压。把请求写成代码——“用 Python 解压这个文件并列出内容”——能稳定触发 Data Analysis 工具。在 GPT-5.5 上,模型选择器里挑 Thinking 也比 Instant 更容易主动去调工具。

如何判断:其他对话能分析 CSV,但这个 ZIP 始终不开 Python 代码块。

3. 文件类型过滤拒收了上传

某些账户类型、学校和公司(Enterprise/Edu)部署、被 DLP 标记的账户,会在上传层就拦 .zip.exe.gz。文件看似挂上去了,但沙箱看到的是 stub 或什么都没有。

如何判断os.listdir("/mnt/data") 找不到你的 ZIP 名,或显示 0 字节占位。被管理的工作区(admin-managed workspace)最常见。

4. 用了不支持的压缩格式或加密 ZIP

ZIP 没问题。.rar.7z、加密 ZIP、分卷压缩(.zip.001.zip.002)在沙箱里都会失败——内置的 unzip/zipfile 不带 RAR / 7z 支持,也不会弹密码框。

如何判断:Python 输出 BadZipFileRarCannotExec,或 RuntimeError: ... encrypted / Bad password

5. 压缩包超出沙箱磁盘容量

Data Analysis 沙箱的临时存储有限。单文件上传上限是 512MB(截至 2026 年 6 月),但一个接近上限、解压后膨胀到好几个 GB 的 ZIP 会把磁盘占满,解压中途以 OSError: No space left on device 失败。

最短修复路径

Step 1:确认 Python 工具被触发

用默认的 GPT-5.5 模型(Instant、Thinking、Pro 都支持 Data Analysis),开头明确要求解压:

Use Python to unzip this file to /tmp/extracted, then list every file
with its size, and print the first 30 lines of any .md or .txt file
at the top level.

应该能看到一个 Python 工具代码块跑起来。如果什么都没跑,说明请求被路由到了纯聊天——重发 prompt,或切到 GPT-5.5 Thinking(更愿意调工具)。

Step 2:用已知可行的解压片段

如果自动方式还是失败,直接贴下面这段让模型原样执行:

import zipfile, os

src = "/mnt/data/project.zip"   # 改成你实际的文件名
dst = "/tmp/extracted"
os.makedirs(dst, exist_ok=True)

with zipfile.ZipFile(src) as z:
    z.extractall(dst)
    for info in z.infolist():
        print(info.filename, info.file_size)

对任何标准、非加密 ZIP 都管用,并打印出文件树。上传的文件一定落在 /mnt/data/<name>,所以 ZIP 名不同就改一下 src

Step 3:加密 ZIP 要带密码

import zipfile
with zipfile.ZipFile("/mnt/data/secure.zip") as z:
    z.extractall("/tmp/extracted", pwd=b"yourPassword")

密码会以明文写进 prompt,并可能被留在对话里。如果敏感,先在本地解密、再上传一份不加密的副本。

Step 4:RAR / 7z 先在本地转 ZIP

沙箱里没有 unrar7z 程序。在你自己电脑上:

# macOS
brew install p7zip
7z x archive.7z

# 想保留单文件就再打包成 ZIP
zip -r project.zip extracted/

上传新的 .zip,或者直接上传解压后的文件。

Step 5:超大压缩包就本地解压、选择性上传

压缩包超过约 100MB、或解压后好几个 GB,干脆别传 ZIP——解压还没跑完就会撞上沙箱磁盘。本地解压,挑出问题真正相关的 5-20 个文件,只上传这些。网页端单条消息最多可附 20 个文件(截至 2026 年 6 月),精选的一组通常一次就传得完。沙箱磁盘省了、token 省了、ChatGPT 立刻分析对的文件。

如何确认修好了

解压命令跑完后,确认文件在磁盘上是真实的(大小非零):

import os
for root, dirs, files in os.walk("/tmp/extracted"):
    for f in files:
        path = os.path.join(root, f)
        print(f"{os.path.getsize(path):>10} {path}")

应该能看到压缩包里每个文件都列出来、且 size 非零。然后让 ChatGPT 按完整路径读一个具体文件——如果它返回了真实内容,说明沙箱确实能打开解压后的文件,就修好了。

常见问题

为什么 ChatGPT 有时自动解压 ZIP、有时又不? 当 Data Analysis 工具被调起来时,近期的 GPT-5.5 版本常常会自动解压 ZIP 并读取内容;而当请求被路由到轻量级文件预览路径时,它只读文件名和元数据。用一句明确的 “use Python to unzip…” prompt 强制走代码路径,就不用碰运气了。

免费版 ChatGPT 能打开 ZIP 吗? 免费账户也有 Data Analysis,但配额很紧(截至 2026 年 6 月约每天 3 次文件上传),用量窗口也更小。解压机制和 Plus 完全一样,只是更快撞到上限。Go($8/月)、Plus($20/月)、Pro($100 / $200)会抬高上传和消息上限。

单个文件最大能传多大? 512MB 每文件(截至 2026 年 6 月),文本/文档约 2M token 上限,CSV/表格实际上分析超过约 50MB 后质量会下降。ZIP 可以到 512MB,但别忘了它解压后还得装进沙箱磁盘。

沙箱说我的 ZIP 根本不在 /mnt/data 里——怎么办? 那是上传层被拒(原因 3),在被管理的 Enterprise/Edu 或 DLP 账户上很常见——这些账户会拦 .zip。改后缀名不可靠;正确做法是本地解压、上传单个文件,或者请工作区管理员放开压缩包上传。

ChatGPT 支持 RAR 或 7z 吗? 不支持。沙箱只有 ZIP 工具链。先在本地把 .rar / .7z 转成 .zip(或直接上传解压后的文件)再上传。

上传和解压出来的文件在沙箱里放在哪? 上传的文件落在 /mnt/data/。会话期间解压或生成的东西,你写到哪就在哪(上面的片段用的是 /tmp/extracted)。两者都会在沙箱会话结束时清空,所以需要留存的东西要及时下载。

预防

  • 默认上传单个文件而不是压缩包。每个文件有明确名字、一上来就可读,ChatGPT 分析质量更高。
  • 必须上传 ZIP 时,用这个模板保证触发 Data Analysis:「用 Python 把 <名字>.zip 解压到 /tmp/extracted,列出内容,然后回答:<问题>」。
  • 跟 LLM 共享时不要用 RAR / 7z——先转 ZIP。
  • 代码 review 优先贴文件树文本 + 最相关的 3-5 个文件,别上传 200 文件的 ZIP。
  • 超大数据集先采样:本地解压成 1000 行或 50 文件再上传那个子集。

标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #zip