Was ist der schnellste Weg zu überprüfen, ob Blöcke von Nullen in vielen Dateien sind. Die Blöcke sollten größer als 32000 Bytes von Nullen sein. Der folgende Code langsam ist:Nullblöcke größer als 32 KB in Dateien finden
empty_blocks = []
min_length = 32000
block = False
begin = -1
data = open(file_name,'rb').read()
for i,byte in enumerate(data):
byte = ord(byte)
if byte == 0x00 and block == False:
block = True
begin = i
elif byte != 0x00 and block == True:
block = False
if length >= min_length:
empty_blocks.append((begin, i - begin))
begin = -1
Müssen die Blöcke auch eine Ausrichtungsanforderung erfüllen? Was ist mit Überschneidungen, wenn die Ausrichtungsanforderung nicht 32k ist? – Flexo
Die Dateien wurden durch das Bittorrent-Synchronisationsprotokoll beschädigt. Ich habe die Information, dass die kleinste Stückgröße, die das Bittorrent-Protokoll überträgt, 32kb ist. Ich bin mir nicht sicher, ob die Nullblöcke n * 32kb mit n = 1,2,3,4 oder irgendeinem Wert größer als 32768 sind. –