你把一个 30 文件的 project.zip 拖进对话,问”汇总一下里面的内容”——ChatGPT 要么说它打不开压缩包、要么把 ZIP 当成二进制 blob、要么压根不尝试。原因分层:普通对话模式根本不会执行解压;Code Interpreter(Advanced Data Analysis)能解压但要你明说;某些账户层级有文件类型过滤直接拒收 ZIP。最快修法是本地解压后单独上传文件,或者在 Code Interpreter 会话里明确要求”解压并列出文件”。
常见原因
1. 普通对话模式不会跑代码
没开 Code Interpreter,ChatGPT 不能执行 unzip。它能直接读 TXT / PDF / DOCX,但 ZIP 是二进制、需要沙箱解压。在非 CI 对话里问”这个 zip 里有什么”,要么礼貌拒绝、要么编一个答案。
如何判断:没有”Analyzing…”指示器、没有 Python 工具图标——纯聊天模式。回复是泛泛的”我不能打开压缩包”而不是 Python traceback。
2. Code Interpreter 在但你没触发
即使是 Plus 账号也可能需要明说。问”汇总这个 zip”有时会走文件汇总路径而不解压。问”用 Python 解压这个文件并列出内容”基本一定触发 Code Interpreter。
如何判断:其他对话能分析 CSV,但这个 ZIP 始终不开 Python 工具。
3. 文件类型过滤拒收了上传
某些账户类型、学校 / 公司部署、被 DLP 标记的账户会在上传层就拦 .zip、.exe、.gz。文件看似挂上去了,但 Code Interpreter 看到的是 stub 或什么都没有。
如何判断:让它 os.listdir("/mnt/data"),找不到你的 ZIP 名,或者显示 0 字节占位。
4. 用了不支持的压缩格式或加密 ZIP
ZIP 没问题。.rar、.7z、加密 ZIP、分卷压缩(.zip.001、.zip.002)在沙箱里都会失败——unzip 不带 RAR / 7z 支持,也不会弹密码框。
如何判断:Python 输出 BadZipFile、RarCannotExec 或 RuntimeError: ... encrypted。
5. 压缩包超出沙箱磁盘容量
Code Interpreter 沙箱 tmp 存储有限。一个 2GB 的 ZIP 解压成 8GB 会把磁盘占满,解压中途失败。
最短修复路径
Step 1:确认 Code Interpreter 是活的
用支持 Code Interpreter 的模型(GPT-5、GPT-5.5、o3 code 模式),开头明确说要解压:
用 Python 把这个文件解压到 /tmp/extracted,列出所有文件 + 大小,
再打印顶层每个 .md 或 .txt 文件的前 30 行。
应该能看到 Python 工具图标转起来。如果没有,说明模型不在 code 模式——换模型或重写 prompt。
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 都管用,并打印出文件树。
Step 3:加密 ZIP 要带密码
import zipfile
with zipfile.ZipFile("/mnt/data/secure.zip") as z:
z.extractall("/tmp/extracted", pwd=b"yourPassword")
密码会写在 prompt 里——注意 ChatGPT 可能会留日志。敏感密码建议先在本地去掉。
Step 4:RAR / 7z 先在本地转 ZIP
Code Interpreter 没有 unrar、7z。在你自己电脑上:
# macOS
brew install p7zip
7z x archive.7z
# 想保留单文件就再打包成 ZIP
zip -r project.zip extracted/
上传新的 .zip,或者直接上传解压后的文件。
Step 5:超大压缩包就本地解压、选择性上传
压缩包 > 100MB 或解压后好几个 GB,干脆别传 ZIP。本地解压,挑出问题相关的 5-20 个文件,只上传这些。沙箱磁盘省了、token 省了、ChatGPT 立刻分析对的文件。
验证修复
解压命令跑完后,用这段确认:
import os
for root, dirs, files in os.walk("/tmp/extracted"):
for f in files:
path = os.path.join(root, f)
size = os.path.getsize(path)
print(f"{size:>10} {path}")
应该能看到压缩包里每个文件都列出来、且 size 非零。然后让 ChatGPT 按路径读一个具体文件——确认沙箱真的能打开解压后的内容。
预防
- 默认上传单个文件而不是压缩包。每个文件有明确名字、立即可读,ChatGPT 分析质量更高。
- 必须上传 ZIP 时,按这个模板写:「用 Python 把
<名字>.zip解压到/tmp/extracted,列出内容,然后回答:<问题>」——保证触发 Code Interpreter。 - 跟 LLM 共享时不要用 RAR / 7z——先转 ZIP。
- 代码 review 优先贴文件树文本 + 最相关的 3-5 个文件,别上传 200 文件的 ZIP。
- 超大数据集先采样:本地解压成 1000 行或 50 文件再上传那个子集。
Related
- ChatGPT file type unsupported
- ChatGPT multiple files not used together
- ChatGPT spreadsheet too large truncated
- ChatGPT large document incomplete analysis
- ChatGPT CSV column misread
- ChatGPT file disappears from conversation
标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #zip