2015-03-31 147 views
5

文件的特定字节我想指定偏移量,然后读取文件的字节像阅读蟒蛇

offset = 5 
read(5) 

,然后阅读未来6-10等我读到寻找,但我无法理解它如何工作以及这些示例不足以描述。

seek(offset,1)的回报是什么?

感谢

+1

提示:确保您打开二进制访问文件,例如:'open(filename,'rb')'。 – cdarke 2015-03-31 19:11:01

回答

4

与Python的REPL打球只是为了看看自己:

[...]:/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' 
+1

而真:通过这样做,片B印的所有字节,除了第一 fo.seek(偏移,1) B = fo.read() 印片B “偏移“那些......我只是困惑...... – user3124171 2015-03-31 19:14:51

+0

OP没有指定从哪里计算偏移量。如果它是文件的开头,它应该是'f.seek(6,0)'或者只是'f.seek(6)'。这里没有什么区别,因为在打开的文件中没有中间读取来改变当前流的位置。由于OP需要六个偏移量之后的下五个字符,读取应该是'f.read(5)'。 – 2015-03-31 19:15:07

3

seek不返回任何有用的东西。它只是将内部文件指针移动到给定的偏移量。下一次读取将从该指针开始读取。

+0

那么,它应该返回'None':P – inspectorG4dget 2015-03-31 19:09:08

4

的值的seek第二个参数是0,1,或2:

0 - offset is relative to start of file 
1 - offset is relative to current position 
2 - offset is relative to end of file 

记住,你可以检查出帮助 -

 
>>> 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.