在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])