finding/replacing a long binary pattern in a .bin file
François Pinard
pinard at iro.umontreal.ca
Thu Jan 13 11:18:18 EST 2005
[Stephen Thorne]
> On 12 Jan 2005 22:36:54 -0800, yaipa <yaipa at yahoo.com> wrote:
>
> > What would be the common sense way of finding a binary pattern in
> > a .bin file, say some 200 bytes, and replacing it with an updated
> > pattern of the same length at the same offset? The file itself
> > isn't so large, maybe 32 kbytes is all and the need for speed is not
> > so great, but the need for accuracy in the search/replacement is
> > very important.
> Okay, given the requirements.
> f = file('mybinfile')
> contents = f.read().replace(oldbinstring, newbinstring)
> f.close()
> f = file('mybinfile','w')
> f.write(contents)
> f.close()
> Will do it, and do it accurately. But it will also read the entire
> file into memory.
32Kb is a small file indeed, reading it in memory is not a problem!
People sometimes like writing long Python programs. Here is about the
same, a bit shorter: :-)
buffer = file('mybinfile', 'rb').read().replace(oldbinstring, newbinstring)
file('mybinfile', 'wb').write(buffer)
--
François Pinard http://pinard.progiciels-bpi.ca
More information about the Python-list
mailing list