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

使用Python生成的CSV文件体积过大,附代码寻求优化方案

问题:Python生成的CSV文件体积过大

我用Python创建了一个CSV文件,但生成的文件体积超出预期,以下是我用来创建CSV的代码片段:

import csv
srcFile = open("C:\Users\XXXX\Expenses.csv","r")
data = srcFile.read()
srcList = data.split("\n")
colNames = srcList[0].split(",")
header = srcList[1]
sheetData = srcList[2:]
final_data = []
expense_data = []
for row in sheetData:
    split_row = row.split(",")
    final_data.append(split_row)
for row in range(0, len(final_data)-1):
    for col in range(3, 30):
        loc = final_data[row][0]
        opsheet = final_data[row][1]
        rowNum = final_data[row][2]
        colNam...

恳请各位提供优化文件体积的解决方案。


优化CSV文件体积的实用方案

1. 别再手动分割CSV,用内置csv模块高效读写

你现在靠split("\n")和split(",")手动拆分CSV的方式,不仅容易踩坑(比如字段里带逗号、换行符的情况会直接拆坏数据),还会因为额外的字符串操作占用更多内存,间接让生成的文件带冗余。换成Python自带的csv.reader和csv.writer处理,它会自动处理特殊字符,生成更紧凑的标准CSV:

import csv

# 读取源文件,用with自动管理文件句柄更安全
with open(r"C:\Users\XXXX\Expenses.csv", "r", newline="", encoding="utf-8") as src_file:
    reader = csv.reader(src_file)
    col_names = next(reader)
    header = next(reader)
    sheet_data = list(reader)

# 处理完数据后写入优化后的CSV
with open(r"C:\Users\XXXX\Optimized_Expenses.csv", "w", newline="", encoding="utf-8") as out_file:
    writer = csv.writer(out_file)
    writer.writerow(col_names)
    writer.writerow(header)
    writer.writerows(sheet_data)

2. 直接生成压缩文件

如果你的数据量本身就很大,压缩是最立竿见影的办法。用Python的gzip或zipfile模块直接把CSV打包成压缩格式,体积能砍半甚至更多:

比如用gzip生成压缩文件:

import csv
import gzip

with open(r"C:\Users\XXXX\Expenses.csv", "r", newline="", encoding="utf-8") as src_file:
    reader = csv.reader(src_file)
    # 写入gzip压缩文件,wt表示文本模式写入
    with gzip.open(r"C:\Users\XXXX\Expenses.csv.gz", "wt", encoding="utf-8") as gz_file:
        writer = csv.writer(gz_file)
        writer.writerows(reader)

3. 清理冗余数据

先检查你的数据处理逻辑:有没有重复的行?有没有全是空值的列?或者某些字段能不能精简?比如如果第3到30列里大量都是空值,完全可以只保留有实际数据的列,去掉这些无效内容能大幅缩小文件体积。

4. 换成更紧凑的二进制格式(替代CSV)

如果业务场景允许,别死磕CSV了,试试Parquet、Feather这类二进制格式,它们是专门为大数据存储优化的,体积比CSV小得多,读写速度也更快。用Pandas就能轻松实现:

(需要先安装依赖:pip install pandas pyarrow)

import pandas as pd

# 读取原CSV
df = pd.read_csv(r"C:\Users\XXXX\Expenses.csv")
# 保存为Parquet格式
df.to_parquet(r"C:\Users\XXXX\Expenses.parquet")

5. 优化编码和换行符

确保写入时用合适的编码(比如utf-8比一些老旧编码更紧凑),并且指定newline="",避免csv.writer生成多余的换行符,减少文件里的无效字节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:38:50