I want to specify an offset and then read the bytes of a file like
offset = 5
read(5)
and then read the next 6-10 etc. I read about seek but
The values for the second parameter of seek
are 0, 1, or 2:
0 - offset is relative to start of file
1 - offset is relative to current position
2 - offset is relative to end of file
Remember you can check out the help -
>>> help(file.seek) Help on method_descriptor: seek(...) seek(offset[, whence]) -> None. Move to new file position. Argument offset is a byte count. Optional argument whence defaults to 0 (offset from start of file, offset should be >= 0); other values are 1 (move relative to current position, positive or negative), and 2 (move relative to end of file, usually negative, although many platforms allow seeking beyond the end of a file). If the file is opened in text mode, only offsets returned by tell() are legal. Use of other offsets causes undefined behavior. Note that not all file objects are seekable.
Just play with Python's REPL to see for yourself:
[...]:/tmp$ cat hello.txt
hello world
[...]:/tmp$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('hello.txt', 'rb')
>>> f.seek(6, 1) # move the file pointer forward 6 bytes (i.e. to the 'w')
>>> f.read() # read the rest of the file from the current file pointer
'world\n'
seek
doesn't return anything useful. It simply moves the internal file pointer to the given offset. The next read will start reading from that pointer onwards.