Python的seek函数如何工作?

问题描述 投票:6回答:5

如果我有一些类似文件的对象并执行以下操作:

F = open('abc', 'r')
...
loc = F.tell()
F.seek(loc-10)

寻求做什么?是从文件开头开始读取loc-10字节吗?还是仅备份10个字节就足够聪明了吗?

python seek
5个回答
9
投票

它是特定于OS和libc的。 file.seek()操作委托给实际OS级文件的fseek(3) C调用。


8
投票

根据Python 2.7's docs

file.seek(offset[, whence])

设置文件的当前位置,例如stdio的fseek()。起源参数是可选的,默认为os.SEEK_SET或0(绝对文件定位);其他值为os.SEEK_CUR或1(相对于当前位置)和OS.SEEK_END或2(相对于文件结束)。

说您想向后退10个字节:

file.seek(-10, 1)

4
投票

应该足够聪明,只备份10个字节,但是我想细节确实取决于您使用的文件系统/ OS /运行时库。

请注意,如果您只想备份10个字节,则不需要tell

F.seek(-10,1)

0
投票
file.seek() set the current read/write position.
file.tell() Returns the file's current position.

因此,当您执行**loc = F.tell()**时,会将当前文件位置存储到loc变量中。

[**file.seek()**接受两个参数**file.seek(offset, from)**

因此,您需要定义文件偏移位置。 **from**采用以下值之一[<0,1,2(0 =开头,1 =当前,2 =结束)

这就是它的工作方式。

-4
投票
根据文档,您需要执行f.seek(offset, from_what),或者您需要的情况下,F.seek(-10, loc)

您的示例应该起作用,但这更明确了

© www.soinside.com 2019 - 2024. All rights reserved.