如果我有一些类似文件的对象并执行以下操作:
F = open('abc', 'r')
...
loc = F.tell()
F.seek(loc-10)
寻找是做什么的?是否从文件开头开始并读取loc-10
字节?还是仅仅备份 10 个字节就足够聪明了?
它是特定于操作系统和 libc 的。该file.seek()
操作委托给fseek(3)
实际操作系统级文件的 C 调用。
file.seek(offset[, whence])
设置文件的当前位置,如 stdio 的 fseek()。whence 参数是可选的,默认为 os.SEEK_SET 或 0(绝对文件定位);其他值是 os.SEEK_CUR 或 1(相对于当前位置搜索)和 os.SEEK_END 或 2(相对于文件结尾搜索)。
假设您希望相对于您的位置返回 10 个字节:
file.seek(-10, 1)
它应该足够聪明,只备份 10 个字节,但我想细节真的取决于你正在使用的文件系统/操作系统/运行时库。
请注意,如果您只想备份 10 个字节,则不需要tell
.
F.seek(-10,1)
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.
根据文档,您需要这样做f.seek(offset, from_what)
,或者在您的情况下,F.seek(-10, loc)
你的例子应该有效,但这更明确