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

为何gzip.open()提示找不到已存在的.pkl.gz压缩文件?

解决.pkl.gz文件找不到的问题

问题原因

你遇到的FileNotFoundError核心原因是当前工作目录与脚本所在目录不一致:

  • 代码里os.listdir("W:\Code\Machine Learning\digit-recognition-dnn\data")用了绝对路径,所以能正确列出文件夹里的文件;
  • 但gzip.open(name, 'rb')用的是相对路径,这个路径是以Python的当前工作目录为基准,而非脚本所在的data文件夹,导致找不到文件。修改文件名的操作完全没触及根本问题,所以没用。

解决方案

推荐两种可靠的解决方式:

1. 使用文件绝对路径

直接指定mnist.pkl.gz的完整路径,注意用原始字符串(前缀r)避免转义字符干扰:

name = r"W:\Code\Machine Learning\digit-recognition-dnn\data\mnist.pkl.gz"

2. 基于脚本目录构建路径(更灵活)

通过os.path.dirname(__file__)获取脚本所在的目录,再用os.path.join拼接文件名,这样无论你在哪个目录下运行脚本,都能正确找到文件:

import gzip
import pickle
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import os

# 获取当前脚本所在目录
script_dir = os.path.dirname(__file__)
# 拼接得到目标文件的完整路径
file_path = os.path.join(script_dir, 'mnist.pkl.gz')

with gzip.open(file_path, 'rb') as f:
    train_set, valid_set, test_set = pickle.load(f)

train_x, train_y = train_set

plt.imshow(train_x[0].reshape((28, 28)), cmap=cm.Greys_r)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:41:01