过滤大型CSV文件

问题描述 投票:0回答:1

在python中,我创建了这段小代码来过滤一个基于另一个CSV文件的CSV文件。对于小的样本文件,它的工作,但我有一个CSV文件有43个mio.行(2.8 GB的文件),然后这不工作。

FileA包含了我需要的东西列表,而FileB需要基于FileA进行过滤(两个文件的前4列包含相同的列)。有什么建议可以用另一种方法来做?

from csv import reader
from csv import writer

 with open('C:\\temp\\mat_filter_large.csv', encoding='utf-8') as fileA, \
 open('C:\\temp\\bom_large.csv', encoding='utf-8') as fileB, \
 open('C:\\temp\\out_large.csv', 'w',encoding='utf-8', newline='\n') as outB:

csv_writer = writer(outB,delimiter=';')

readerA = reader(fileA,delimiter=';')
readerB = reader(fileB,delimiter=';')

A_map = {(col1, col2, col3, col4) for col1, col2, col3, col4, *_ in readerA}

for col1, col2, col3, col4, *rest in readerB:

    if (col1, col2, col3, col4) in A_map:
        csv_writer.writerow([col1, col2, col3, col4, *rest])
python csv filter
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.