nohchiborz: Немного оптимизировав можно прийти вот к такому решению:
with open('A.txt') as a, open('B.txt') as b, open('finish.txt', 'w') as finish:
b_set = {l.strip() for l in b}
finish.write('\n'.join(i.strip() for i in a if i.strip() not in b_set))
Таким образом, не придётся хранить множество a_set в оперативе, только b_set.
А вот что делать, если b_set не влезет - я пока не могу придумать, чтобы это было лаконично.
brainick: А в этом есть какой-то практический смысл? Я не спорю, заказчики часто приходят ко мне именно с тостера, но даёт ли быть в топе за день какое-то преимущество?