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

如何用Python下载Kaggle数据集并处理,解决BadZipFile报错问题

问题原因

Kaggle的数据集下载接口默认需要身份校验,你直接通过requests、urlretrieve发起的未携带认证信息的请求,返回的实际是Kaggle登录页/权限校验页的HTML内容,并非目标zip压缩包,因此会触发BadZipFile异常。你后续用urlretrieve下载到的csv、txt格式文件本质也是HTML代码,不是预期的数据集内容。

可行解决方法

推荐使用Kaggle官方提供的Python API完成下载、解压操作,稳定性最高,操作步骤如下:

步骤1:安装依赖库

执行命令安装kaggle官方工具包:

pip install kaggle

步骤2:配置API凭证

  • 登录你的Kaggle账号,进入个人设置页的API板块,点击生成新的API令牌,会自动下载kaggle.json文件,文件内包含你的账号专属认证信息
  • Windows系统将该文件放入C:\Users\<你的系统用户名>\.kaggle\目录下,Linux/macOS系统放入~/.kaggle/目录下,若.kaggle目录不存在可手动新建
  • Linux/macOS系统额外执行命令chmod 600 ~/.kaggle/kaggle.json配置文件权限,避免触发权限报错

步骤3:代码实现下载、解压与路径获取

import kaggle
import os
import zipfile

# 1. 下载Quora问题对数据集
# 数据集标识对应页面路径中的「作者/数据集名」,unzip设为False先保留压缩包方便后续按需解压
kaggle.api.dataset_download_files(
    'quora/question-pairs-dataset',
    path=os.getcwd(),
    unzip=False
)
zip_path = os.path.join(os.getcwd(), 'question-pairs-dataset.zip')

# 2. 按需处理压缩包
with zipfile.ZipFile(zip_path, 'r') as zf:
    # 先获取压缩包内所有文件名,方便后续处理
    inner_file_list = zf.namelist()
    print("压缩包内包含文件:", inner_file_list)
    # 全量解压到当前目录
    zf.extractall(os.getcwd())
    # 若只需解压单个指定文件,替换为如下代码即可
    # zf.extract('questions.csv', os.getcwd())

# 3. 拼接数据集路径用于后续处理
TRAIN_DATA_FILE = os.path.join(os.getcwd(), 'questions.csv')

# 4. 同理下载GloVe词向量数据集,设置unzip=True可自动完成解压,无需手动处理压缩包
kaggle.api.dataset_download_files(
    'watts2/glove6b50dtxt',
    path=os.getcwd(),
    unzip=True
)
GLOVE_EMBEDDING = os.path.join(os.getcwd(), 'glove.6B.50d.txt')

注意:请勿将你的kaggle.json文件上传到公开代码仓库,避免账号信息泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:15:04