6

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

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

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

4

5 回答 5

10

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

于 2012-11-07T21:43:13.340 回答
8

根据Python 2.7 的文档

file.seek(offset[, whence])

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

假设您希望相对于您的位置返回 10 个字节:

file.seek(-10, 1)
于 2012-11-07T21:44:54.893 回答
4

它应该足够聪明,只备份 10 个字节,但我想细节真的取决于你正在使用的文件系统/操作系统/运行时库。

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

F.seek(-10,1)
于 2012-11-07T21:42:38.170 回答
3
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 = 结束)

So that's how it's work.

于 2019-12-01T18:39:32.947 回答
-4

根据文档,您需要这样做f.seek(offset, from_what),或者在您的情况下,F.seek(-10, loc)

你的例子应该有效,但这更明确

于 2012-11-07T21:45:55.237 回答