Overwrite just one line? Am I a n00b or is this impossible? Both? :D

Erik Max Francis max at alcyone.com
Wed Apr 6 18:16:51 EDT 2005


Matt at revera wrote:

> I'd like to overwrite just one line of a binary file, based on a
> position set by seek().  Is there no way to do this? As far as I can
> tell I need to read the whole file, change the line, and write it all
> back out.  Not exactly easy on the memory, but I see no other solution.

You need to find what "just one line" means in a binary format.  If the 
chunk you're replacing and the chunk you want to replace it with are of 
different sizes, then you need to use a temporary file (or read the 
remainder of the file in memory).

Otherwise, open the file in read-write binary mode ("r+b") and seek and 
write appropriately.  In the general case, you need to write to a 
temporary file to get the job done.

Memory usage is not a factor, here; read and write the temporary files 
in chunks.  That way you can manage the memory usage to whatever upper 
bound you wish.

-- 
Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM erikmaxfrancis
   Be able to be alone. Lose not the advantage of solitude.
   -- Sir Thomas Browne



More information about the Python-list mailing list