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

如何无需解压Zip文件将其中文本文件读取到Pandas DataFrame?

无需解压读取嵌套Zip中多文本文件到Pandas DataFrame

直接用pd.read_csv(zip_path)只适用于Zip包中只有单个顶层文本文件的场景,你的情况是多层嵌套的多个txt文件,得用zipfile模块配合Pandas遍历读取,具体代码如下:

import zipfile
import pandas as pd

# 定义Zip文件路径和最终导出的CSV路径
zip_path = "zip1.zip"
output_csv = "combined_output.csv"

# 初始化空列表来存储每个文件的DataFrame
df_list = []

# 打开Zip包(无需解压到磁盘)
with zipfile.ZipFile(zip_path, 'r') as zf:
    # 遍历Zip中的所有文件条目
    for file_info in zf.infolist():
        # 跳过文件夹,只处理.txt文件
        if not file_info.is_dir() and file_info.filename.endswith('.txt'):
            # 打开Zip中的文件对象
            with zf.open(file_info.filename) as file:
                # 读取文本文件为DataFrame,根据实际情况调整sep(分隔符)、encoding等参数
                df = pd.read_csv(file, sep=',', encoding='utf-8')
                # 可选:添加一列记录当前文件的路径,方便溯源
                df['source_file'] = file_info.filename
                # 将当前文件的DataFrame加入列表
                df_list.append(df)

# 合并所有DataFrame
combined_df = pd.concat(df_list, ignore_index=True)

# 导出为CSV文件
combined_df.to_csv(output_csv, index=False, encoding='utf-8')

注意事项:

  • 若你的txt文件不是逗号分隔,需要修改pd.read_csv中的sep参数,比如制表符分隔用sep='\t',空格分隔用sep='\s+'。
  • 如果存在中文乱码问题,可尝试替换encoding参数为'gbk'或'utf-8-sig'。
  • 如果不同txt文件的列结构不一致,pd.concat会自动补全缺失值为NaN,可根据需求提前统一列名或筛选特定列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:22