Mark Wilkinson wrote: > Why this: > >> lines = iter(infile.readline, "") >> # copy one line at a time >> for line in lines: > > Rather than this? > >> for line in infile:
file.next() uses an internal cache. The data in that cache would be lost when the rest of the file is copied using file.read() with for block in iter(lambda: infile.read(BLOCKSIZE), ""): outfile.write(block) Demonstration: >>> open("tmp.txt", "w").write("alpha\nbeta\ngamma\n") >>> infile = open("tmp.txt") >>> infile.next() 'alpha\n' >>> infile.read() '' # where is 'beta\ngamma\n'? I admit I didn't profile whether the suggested approach is an overall win over line-wise copying of the whole file or manually keeping track of the position in the file followed by a seek(). Peter -- http://mail.python.org/mailman/listinfo/python-list