1

假设我有两个名为 的 CSV文件A和.BPython

Ahead样子:

 headerNameA1,headerNameA2
 1.12412424,1
 1,1
 1,1
 1,1

Bhead样子:

 headerNameB1,headerNameB2
 1,1
 1,1
 1,1
 1,1

我的目标是将两者合并到一个文件C中。但是,我的目标也不是将它们加载到 RAM 中,因为它们是大文件。结果C将是:

 headerNameA1,headerNameA2,headerNameB1,headerNameB2
 1.12412424,1,1,1
 1,1,1,1
 1,1,1,1
 1,1,1,1

如果解决方案可以组合多个 CSV 文件,则可以加分。但是,如果这在解决方案中是不可能的,那很好C,因为我总是可以将任何其他内容与to makeD结合起来,然后将其他任何内容与Dto make结合起来E,无穷无尽。

该解决方案可以Python基于或terminal基于os.systemin Python

4

1 回答 1

4

您可以一次使用两个文件中的一行,将它们连接在一起并写入您的输出文件。该csv模块使事情变得更清洁。

import csv
with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w:
    writer = csv.writer(w)
    r1,r2 = csv.reader(f1),csv.reader(f2)
    while True:
        try:
            writer.writerow(next(r1)+next(r2))
        except StopIteration:
            break

正如@RogerPate 指出的那样,您可以使用itertools.izip(只要zip您在python3 中)使这个更光滑

from itertools import izip
import csv
with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w:
    writer = csv.writer(w)
    for r1,r2 in izip(csv.reader(f1),csv.reader(f2)):
        writer.writerow(r1+r2)
于 2013-11-13T04:36:41.530 回答