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