text file edit object
Skip Montanaro
skip at pobox.com
Fri Jul 11 08:36:20 EDT 2003
Facundo> myfile = open("foo.txt", "r")
Facundo> mylines = myfile.readlines()[:-10]
Facundo> myfile.writelines(mylines)
Facundo> myfile.close()
Facundo> I only see two problems with this:
Facundo> - Poor performance on very big files
Facundo> - Bad support on "hanging in the middle"
Not to mention the fact that you can't write to myfile as defined. ;-) How
about something like (not tested):
import os, sys
try:
infile = file("foo.txt", "r")
lines = infile.readlines()[:-10]
infile.close()
except IOError:
print >> sys.stderr, "edit failed"
else:
try:
outfile = file("foo.txt.new", "w")
outfile.writelines(lines)
outfile.close()
except IOError:
try:
os.unlink("foo.txt2")
except IOError:
pass
print >> sys.stderr, "edit failed"
else:
os.rename("foo.txt2", "foo.txt")
? On Windows I think you have to unlink foo.txt before calling os.rename().
Unfortunately, it quickly gets pretty baroque if you want to do things
right. I'm not even sure IOError is the only exception that might be
raised.
Skip
More information about the Python-list
mailing list