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

Python中下载Zip文件并解析内部CSV文件的问题求助

解决Zip解压后CSV解析的问题

嘿,我一眼就瞅出问题所在啦——你这段脚本里读取CSV的方式错了!

你现在用open(files[0], 'r')是想读取本地磁盘上的文件,但实际上你下载的Zip文件是加载在内存里的,并没有把里面的CSV写到本地磁盘,所以Python会找不到这个文件,自然就解析失败了。

修正后的代码

直接通过ZipFile对象打开内部的CSV文件就行,不用先把文件存到本地,这样更高效也不会出错:

import csv
from requests import get
from io import BytesIO
from zipfile import ZipFile

# 下载并加载Zip文件到内存
request = get('https://example.com/some_file.zip')
zip_file = ZipFile(BytesIO(request.content))
files = zip_file.namelist()

# 直接读取Zip内的CSV文件(无需写入本地)
with zip_file.open(files[0]) as csvfile:
    # 先把二进制内容解码为字符串,再按行拆分
    # 注意:如果你的CSV用的是其他编码(比如GBK),替换这里的utf-8即可
    csv_content = csvfile.read().decode('utf-8').splitlines()
    csvreader = csv.reader(csv_content)
    
    for row in csvreader:
        print(row)

额外注意事项

  • 编码问题:如果你的CSV文件不是UTF-8编码(比如中文常用的GBK),一定要把decode('utf-8')改成对应的编码,否则会出现乱码或者解码错误。
  • 文件校验:最好加个判断确保你读取的是CSV文件,避免误读到Zip包里的其他文件:
    csv_files = [f for f in files if f.endswith('.csv')]
    if not csv_files:
        print("Zip包里没有CSV文件哦!")
    else:
        with zip_file.open(csv_files[0]) as csvfile:
            # 后续处理逻辑
    

这样调整后,你的脚本应该就能正常解析CSV内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:24:43