2016-08-08 12 views
1

Was ist der am meisten pythische Weg, um das erste Byte der Datei in ihre Inversionskopie zu ändern? Nun verwende ich diesen Code:Das erste Byte in der Datei invertieren

with open(file_path, 'r+b') as f: 
    b = bytearray(f.read(1)) 
    b[0] = ~b[0] & 255 
    f.seek(0) 
    f.write(b) 
+1

So haben Sie ein Problem mit Ihrem Code, durch Zufall? – Kasramvd

+2

die einzige Änderung, die ich machen würde, ist zu tun 'b [0]^0xff' anstelle von' ~ b [0] & 255' – oldrinb

+0

@Kasramvd mit der Ausnahme, dass umständlich aussieht, aber keine –

Antwort

2

Hier ist eine Alternative, die eine Memory-Mapped-Datei verwendet:

import mmap 

with open(file_path, 'r+b') as f, mmap.mmap(f.fileno(), 1) as mm: 
    mm[0] ^= 255