Joson wrote:
Hi all,
Now I have a text file about 1MB. Sometimes I need to remove the last line. The current method I use is reading all content, finding the last sentence, remove it and write the new content to the file. So, it need to read a 1MB file and write a 1MB file. It's ineffictient, I think. Are there any other methods?
------------------------------------------------------------------------

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor
Take a look at file.seek to move to a specific section of the file and file.truncate to truncate a file at a specific size, rough implementation would be something like.

BUFFER = 2**10  # Set your buffer size
f = open(filename, 'r')
multiple = -1
found_it = False

while not found_it:
   f.seek(BUFFER * multiple, os.SEEK_END)
# Seeks from the file endpoint the specified by your buffer * 'iteration' of the app
   offset = f.tell()       # gets the current position
   data = f.read(BUFFER)   # read in your data and process it
   # perform operations to get your termination point offset
   if termination_point_not_found:
       multiple -= 1
   else:
# once you find your position to end the file on truncate the file and exit loop
       f.truncate(offset + termination_point_offset)
       found_it = True

f.close()

It's untested code, but it should work just fine.
As for how fast it is by comparison, I unfortunately don't have time to benchmark it.

--
Kind Regards,
Christian Witts


_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to