En Fri, 13 Jul 2007 23:46:24 -0300, J. J. Ramsey <[EMAIL PROTECTED]> escribió:
> In Perl, there is a module called "Tie::File". What it does is tie a > list to each line of a file. Change the list, and the file is > automatically changed, and on top of this, only the bits of the file > that need to be changed are written to disk. At least, that's the > general idea. That usually means, rewriting from the first modified line to the end of the file. > I was wondering if something roughly similar could be done in Python, > or at the very least, if I can avoid doing what amounts to reading the > whole file into memory, changing the copy in memory, and writing it > all out again. Simplest aproach: lines = list(open("myfile.txt")) del lines[13] lines[42] = "Look ma! Replacing line 42!\n" open("myfile.txt","w").writelines(lines) This of course reads the whole file in memory, but it's a compact way if you require random line access. If you can serialize the file operations, try using the fileinput module with inplace=1. (Having a true Tie::File implementation for Python would be a nice addition to the available tools...) -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list