Python 如何在更短的时间内高效地比较两个巨大的csv文件
我需要比较两个大的csv文件。 但问题是我必须用Python 如何在更短的时间内高效地比较两个巨大的csv文件,python,linux,csv,Python,Linux,Csv,我需要比较两个大的csv文件。 但问题是我必须用file2的所有其他行迭代file1的每一行,并对不同的列进行一些计算 我在python中尝试的部分代码: import csv def getOverlap(a,b): return max(0, min(a[1], b[1]) - max(a[0], b[0])) masterlist = [row for row in c2] for hosts_row in c1: chr1 = hosts_row[3] a
file2
的所有其他行迭代file1
的每一行,并对不同的列进行一些计算
我在python中尝试的部分代码:
import csv
def getOverlap(a,b):
return max(0, min(a[1], b[1]) - max(a[0], b[0]))
masterlist = [row for row in c2]
for hosts_row in c1:
chr1 = hosts_row[3]
a1 = [int(hosts_row[4]),int(hosts_row[5])]
found = False
for master_row in masterlist:
if hosts_row[7] == master_row[7]:
c3.writerow(hosts_row)
chr2 = master_row[3]
b1 = [int(master_row[4]),int(master_row[5])]
if getOverlap(a1,b1) != 0 and chr1 == chr2:
c5.writerow(hosts_row)
else:
c6.writerow(hosts_row)
found = True
break
if not found:
c4.writerow(hosts_row)
found2 = False
for master_row2 in masterlist:
chr2 = master_row[3]
b1 = [int(master_row[4]),int(master_row[5])]
if getOverlap(a1,b1) != 0 and chr1 == chr2:
c7.writerow(hosts_row)
found2 = True
break
if not found2:
c8.writerow(hosts_row)
但是它需要5到6个小时的跑步时间。有没有更快的办法。我有16gb的ram。关键不是文件有多大,而是目标和算法设计的问题
- 一点是定义什么是
差异
- 如果两个文件上的行顺序相同,那么两个不同的行将具有不同的列李>
我意识到这个答案并不是真的添加任何代码,但它提供了一些思考材料。它只是渴望一个评论 在linux(ubuntu)中使用Meld应用程序逐行比较文件了解文件的大小可能有帮助,也可能没有帮助。为什么不将它们加载到DB中并运行SQL查询?如果文件非常大,这将导致计算机内存溢出。如果每台电脑大约6 GB,而电脑只有8 GB的RAM(就像今天普通的笔记本电脑一样)。。。你可以看到将会发生什么。所以这个答案很有问题。