Bengt Richter wrote:
BTW, I'm sure you could write a generator that would take a file name and oldbinstring and newbinstring as arguments, and read and yield nice os-file-system-friendly disk-sector-multiple chunks, so you could write
fout = open('mynewbinfile', 'wb') for buf in updated_file_stream('myoldbinfile','rb', oldbinstring, newbinstring): fout.write(buf) fout.close()
What happens when the bytes to be replaced are broken across a block boundary? ISTM that neither half would be recognized....
I believe that this requires either reading the entire file into memory, to scan all at once, or else conditionally matching an arbitrary fragment of the end of a block against the beginning of the oldbinstring... Given that the file in question is only a few tens of kbytes, I'd think that doing it in one gulp is simpler. (For a large file, chunking it might be necessary, though...)
Jeff Shannon Technician/Programmer Credit International
-- http://mail.python.org/mailman/listinfo/python-list