Here is a non-destructive way keeping track of the
current file position when closing the file and
re-open the file where you left off. You can
always use seek(0) to go back to the beginning.
# ---------------------- start of myfile class
class myfile(file):
myfiles = {}
def __init__(self, fname, *args):
file.__init__(self, fname, *args)
if self.name in myfile.myfiles:
pos = myfile.myfiles[fname]
else:
pos = 0
return self.seek(pos)
def close(self):
myfile.myfiles[self.name] = self.tell()
file.close(self)
# ------------------------ end of myfile class
Below is an example with a simple four line file.
PythonWin 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)]
on win32.
Portions Copyright 1994-2001 Mark Hammond (
[email protected]) -
see 'Help/About PythonWin' for further copyright information.
f = open("C:/Pydev/test.txt")
f.readlines() ['line one\n', 'line two\n', 'line three\n', 'last line\n']
### short four line file
f.close()
from myfile import myfile
f = myfile("C:/Pydev/test.txt")
f.readline() 'line one\n'
f.readline() 'line two\n'
f.close()
### test, is the file really closed?
f.readline()
Traceback (most recent call last):
This turned out really cool,
thanks for the good question,
Jeff Sandys