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

如何用Python批量处理ZIP压缩包内所有TXT文件并生成新压缩包?

批量处理ZIP压缩包内TXT文件并生成新ZIP的解决方案

完全可以实现批量处理ZIP内的所有TXT文件并生成包含处理后CSV的新ZIP,以下是优化后的代码,整合了批量处理逻辑:

完整代码

import pandas as pd
import zipfile
import io

def process_txt_content(txt_content):
    # 读取TXT内容,只保留前2列
    df = pd.read_csv(io.StringIO(txt_content), usecols=[0, 1])
    # 添加列头
    df.columns = ['store', 'sku']
    # 清理store列的前后字符
    df['store'] = df['store'].str.split('R ').str[-1]
    df['store'] = df['store'].str.split(' -').str[0]
    # 将处理后的DataFrame转为CSV字符串
    return df.to_csv(index=False)

# 原ZIP路径和新ZIP路径
input_zip_path = "input_files.zip"
output_zip_path = "processed_files.zip"

# 处理ZIP文件
with zipfile.ZipFile(input_zip_path, 'r') as input_zip, \
     zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as output_zip:
    
    # 遍历原ZIP内的所有文件
    for file_info in input_zip.infolist():
        # 只处理TXT文件
        if file_info.filename.endswith('.txt'):
            # 读取TXT文件内容
            with input_zip.open(file_info) as txt_file:
                txt_content = txt_file.read().decode('utf-8')
                # 处理内容
                processed_csv = process_txt_content(txt_content)
                # 生成新文件名(替换后缀为csv)
                new_filename = file_info.filename.replace('.txt', '.csv')
                # 将处理后的CSV写入新ZIP
                output_zip.writestr(new_filename, processed_csv)

代码说明

  • 内存处理优化:使用io.StringIO在内存中读写数据,避免生成临时文件,提升处理效率
  • 逻辑封装:把单文件处理逻辑封装成process_txt_content函数,代码结构更清晰,便于后续修改维护
  • 批量遍历:通过zipfile.ZipFile.infolist()遍历原ZIP内的所有文件,筛选出TXT格式文件进行针对性处理
  • 新ZIP生成:处理后的文件以原文件名替换后缀为.csv的形式存入新ZIP,保持文件对应关系

注意事项

  • 如果你的TXT文件使用的不是逗号分隔,需要在pd.read_csv中添加sep参数(比如制表符分隔就加sep='\t')
  • 确保原ZIP内的TXT文件格式与示例一致,否则需要调整列索引或字符清理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:22:44