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

如何编写循环批量转换目录下的csv.gz文件为csv文件?

批量转换csv.gz文件为csv文件的解决方案

原代码的问题点

  • 循环逻辑错误:用range(len(all_filenames))拿到的是文件索引,不是实际文件名,导致gzip.open(i)会报错找不到文件
  • 语法错误:for循环后缺少with关键字,且缩进不规范
  • 遗漏关键步骤:只读取了压缩文件,没有执行保存为csv的操作
  • 缺失依赖导入:代码中使用了pd.read_csv但没导入pandas库

修正后的完整代码

import gzip
import glob
import os
import pandas as pd  # 必须导入pandas,否则pd会未定义

# 切换到目标目录
os.chdir('/home/path')
# 获取所有csv.gz格式的文件
all_gz_files = glob.glob('*.csv.gz')

# 遍历每个压缩文件
for gz_file in all_gz_files:
    # 生成对应的csv文件名:去掉末尾的.gz后缀
    csv_file = gz_file[:-3]
    # 读取压缩文件并保存为csv
    with gzip.open(gz_file, 'rt') as f:
        df = pd.read_csv(f)
    df.to_csv(csv_file, index=False)  # index=False避免额外生成索引列
    print(f"转换完成:{gz_file} → {csv_file}")

关键说明

  • 直接遍历文件名列表,不用索引,逻辑更清晰
  • 使用with语句自动管理文件资源,避免手动关闭文件的麻烦
  • 读取压缩文件时指定'rt'模式(文本模式),确保pandas能正确解析内容
  • index=False参数可以防止把DataFrame的行索引写入csv,保持原文件的结构一致
  • 新增打印语句,方便查看每个文件的转换状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:00:52