Read specific bytes of file in python

后端 未结 3 1535
一整个雨季
一整个雨季 2021-02-08 09:02

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

相关标签:
3条回答
  • 2021-02-08 09:17

    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.
    
    0 讨论(0)
  • 2021-02-08 09:18

    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'
    
    0 讨论(0)
  • 2021-02-08 09:22

    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.

    0 讨论(0)
提交回复
热议问题