编程语言
首页 > 编程语言> > python-获取同一文件的多个随机破碎副本的“平均值”

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