python-获取同一文件的多个随机破碎副本的“平均值”
作者:互联网
由于控制器损坏,从USB闪存驱动器下载文件时会随机破坏文件.
我已经下载了同一文件的多个副本,并且每个副本的错误似乎通常都是唯一且随机的.
因此,我需要一个脚本来比较同一文件的多个(3到5个)损坏的副本(每个文件的大小约为100 Mb),并为每个字节“投票”正确的值,然后将其附加到输出文件中.
有没有快速简便的方法可以在Python 3中实现呢?
解决方法:
将字节流压缩在一起,然后使用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])
标签:bitwise-operators,file,python 来源: https://codeday.me/bug/20191109/2010720.html