Python读取Binance Vision的ZIP文件触发BadZipFile错误求助
解决Binance历史数据读取zipfile.BadZipFile错误
问题根源
你当前使用的URL指向的是Binance数据的索引页面(文件列表页),而非实际的ZIP文件。Pandas请求该URL时获取到的是HTML网页内容,而非合法的ZIP二进制数据,因此触发zipfile.BadZipFile错误。
解决方案
1. 修正文件URL
使用直接指向ZIP文件的路径,去掉原URL中的?prefix=参数:
import pandas as pd # 修正后的基础路径,直接指向文件存储目录 base_url = 'https://data.binance.vision/data/spot/monthly/klines/NULSBTC/1w/' url = f'{base_url}NULSBTC-1w-2023-02.zip' # 显式指定compression参数,确保Pandas识别ZIP格式 df = pd.read_csv(url, compression='zip') print(df)
2. 备选方案:通过requests下载后读取
如果直接读取URL仍有问题,可先获取文件二进制内容再处理:
import pandas as pd import requests from io import BytesIO url = 'https://data.binance.vision/data/spot/monthly/klines/NULSBTC/1w/NULSBTC-1w-2023-02.zip' # 发送请求并验证响应 response = requests.get(url) response.raise_for_status() # 用BytesIO包装二进制数据,直接加载为DataFrame df = pd.read_csv(BytesIO(response.content), compression='zip') print(df)
3. 额外排查点
- 访问修正后的URL,确认是否直接触发ZIP文件下载(而非显示文件列表)。
- 检查网络环境,部分网络可能限制直接请求二进制文件,可尝试切换网络测试。
内容的提问来源于stack exchange,提问作者Jodhvir Singh
相关产品推荐
相关产品推荐

