Объедините потоки байтов вместе и используйте Counter
, чтобы получить согласованный байт в каждой позиции.
from functools import partial
from collections import Counter
from contextlib import ExitStack
from mmap import mmap, PROT_READ
fnames = ["t1.txt", "t2.txt"]
with ExitStack() as stack:
fhs = [stack.enter_context(open(f, 'rb')) for f in fnames]
out = stack.enter_context(open("fixed", 'wb'))
streams = [mmap(f.fileno(), 0, prot=PROT_READ) for f in fhs]
for bs in zip(*streams):
c = Counter(bs)
out.write(c.most_common(1)[0][0])