I have to read a file multiple times in which some error info is appended everyday. Is there a way to start reading the file from the point it was left previous day instead
You can use the python tell
file method to see what position you are in a file before you close it and the seek
method to return to that position after you open it again.
Example:
Given a file foo
with the contents
edas
agfa
agf
fgfgfg
You can return to a given position as follows:
>>> f = open('foo')
>>> f.tell()
0
>>> f.readline()
'edas\n'
>>> f.tell()
5
>>> f.close()
>>> f = open('foo')
>>> f.tell()
0
>>> f.seek(5)
>>> f.readline()
'agfa\n'
Yes - it's possible. I believe - you've a file whose size is pretty big enough that you don't want to read from start every time. So here's something you can do - write to a file in your home directory .fileinfo
or something and in that write the last offset of the file you read in that file. And then your program can do something like following
if not os.path.exists('/home/.fileinfo'):
seek_from = 0
else:
of = open('/home/.fileinfo', 'r')
seek_from = int(of.readline().strip())
with open('/path/to/your/file', 'r') as f:
f.seek(seek_from, 0)
# do whatever you want
f.seek(0,-1) # Go to the end of the file
end = f.tell() # Get the position
of = open('/home/.fileinfo', 'w')
of.write(str(end))
of.close()
Something along these lines.
Hope that helps