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

如何从包含千个CSV文件的大文件中提取所有CSV并存入列表?

嘿,我猜你说的“大文件”应该是个压缩包(比如ZIP格式)吧?毕竟直接把上千个CSV塞进单个文件里,最常见的方式就是用压缩包归档~你的初始思路方向没错,但得先把这个大文件的读取/解压逻辑搞定,下面给你分情况说怎么实现:

方法1:处理ZIP格式的归档文件

这是最常见的场景,用Python自带的zipfile模块就能轻松搞定,不需要额外安装依赖:

import zipfile
import csv

csv_file_list = []

# 替换成你的实际大文件名
with zipfile.ZipFile("your_big_file.zip", "r") as zip_ref:
    # 遍历压缩包里的所有文件
    for file_name in zip_ref.namelist():
        # 只筛选CSV文件
        if file_name.endswith(".csv"):
            # 打开压缩包里的单个CSV文件
            with zip_ref.open(file_name) as csv_file:
                # 解码文件内容并转为行列表(如果CSV是其他编码,把utf-8换成对应编码,比如gbk)
                csv_content = csv_file.read().decode("utf-8").splitlines()
                # 用csv.reader解析内容,也可以用csv.DictReader转成字典格式
                csv_reader = csv.reader(csv_content)
                # 把解析后的整个CSV内容加入列表,要是只想存文件名就append(file_name)
                csv_file_list.append(list(csv_reader))
方法2:如果是TAR格式的压缩包(比如.tar/.tar.gz)

如果你的大文件是TAR类压缩包,用tarfile模块的逻辑类似:

import tarfile
import csv

csv_file_list = []

# 替换成你的实际文件名,r:gz对应gzip压缩的TAR包,普通TAR用r:
with tarfile.open("your_big_file.tar.gz", "r:gz") as tar_ref:
    for member in tar_ref.getmembers():
        # 只处理文件类型的条目,并且是CSV文件
        if member.isfile() and member.name.endswith(".csv"):
            file_obj = tar_ref.extractfile(member)
            if file_obj:
                csv_content = file_obj.read().decode("utf-8").splitlines()
                csv_reader = csv.reader(csv_content)
                csv_file_list.append(list(csv_reader))
特殊情况:如果是拼接式的大文件

要是你的“大文件”不是压缩包,而是把所有CSV内容直接拼接在一起的文件(比如每个CSV之间有特定分隔符),那你得先明确拆分规则(比如每个CSV开头有固定标识),再拆分后读取。不过这种场景很少见,优先考虑上面的压缩包方案就行。

最后提醒下:记得把代码里的文件名换成你实际的文件路径,要是CSV的编码不是UTF-8,调整decode()里的参数就好~

内容的提问来源于stack exchange,提问作者benito.cano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:37:27