由于 Controller 损坏,文件在从 USB 闪存驱动器下载时会随机损坏。 我下载了同一个文件的多个副本,每个副本的错误似乎通常是唯一且随机的。
因此,我需要一个脚本来比较同一文件的几个(3 到 5 个)损坏的副本(每个副本的大小约为 100 Mb),并为每个字节“投票”以获得正确的值,然后将其附加到输出文件。
有没有一种在 Python 3 中快速简便地实现它的方法?
最佳答案
将字节流压缩在一起,并使用计数器
在每个位置获取共识字节。
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])
关于python - 获取同一文件的多个随机损坏副本的 "average",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574021/