[EMAIL PROTECTED] 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 && [EMAIL PROTECTED] && 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 -- http://mail.python.org/mailman/listinfo/python-list