将标头添加到CSV而不加载CSV

Jos*_*idd 11 python csv

有没有办法将标题行添加到CSV而不将CSV加载到python的内存中?我有一个18GB的CSV,我想添加一个标题,我看到的所有方法都需要将CSV加载到内存中,这显然是不可行的.

e4c*_*4c5 8

您需要重写整个文件.最简单的是不使用python

echo 'col1, col2, col2,... ' > out.csv
cat in.csv >> out.csv
Run Code Online (Sandbox Code Playgroud)

基于Python的解决方案将在更高的级别上工作,并且速度会慢得多.毕竟18GB是很多数据.最好使用操作系统功能,这将是最快的.


Jea*_*bre 6

只需使用csv模块迭代行的事实,因此它永远不会将整个文件加载到内存中

import csv

with open("huge_csv.csv") as fr, open("huge_output.csv","w",newline='') as fw:
    cr = csv.reader(fr)
    cw = csv.writer(fw)
    cw.writerow(["title1","title2","title3"])
    cw.writerows(cr)
Run Code Online (Sandbox Code Playgroud)

使用writerows确保非常好的速度.记忆在这里幸免.一切都是逐行完成的.由于数据已正确处理,您甚至可以更改输出文件中的分隔符和/或引号.