第一篇文章,您可以尽情提出批评意见...
我的问题: 我有一个包含 1.4 亿行的非常大的文件(文件1)和一个稍小的包含 300 万行的文件(文件2)。我想删除文件1中与文件2匹配的那些行。直觉上,这似乎是一个简单的查找和删除问题,不应该花费太长时间...相对而言。目前我的代码在24G处理器上运行约4天。我希望在几个文件上执行此操作,因此需要改进时间。欢迎任何帮助和评论。
样例文件1:
reftig_0 43 0 1.0
reftig_0 44 1 1.0
reftig_0 45 0 1.0
reftig_0 46 1 1.0
reftig_0 47 0 5.0
示例文件2:
reftig_0 43
reftig_0 44
reftig_0 45
代码:
data = open('file_1', 'r')
data_2 = open('file_2', 'r')
new_file = open('new_file_1', 'w')
d2= {}
for line in data_2:
line= line.rstrip()
fields = line.split(' ')
key = (fields[0], fields[1])
d2[key]=1
#print d2.keys()
#print d2['reftig_1']
tocheck=d2.keys()
tocheck.sort()
#print tocheck
for sline in data:
sline = sline.rstrip()
fields = sline.split(' ')
nkey = (fields[0],fields[1])
#print nkey
if nkey in tocheck:
pass
else:
new_file.write(sline + '\n')
#print sline