>>f.tell() >>>0 f 是一-6ren">
gpt4 book ai didi

python - python中的文件指针

转载 作者:行者123 更新时间:2023-12-05 09:23:19 24 4
gpt4 key购买 nike

我有一堆关于用 Python 处理文件的问题。请帮我整理一下。

假设我创建了一个类似这样的文件。

>>>f = open("text,txt", "w+")
>>>f.tell()
>>>0

f 是一个文件对象。

  1. 我可以假设它是一个文件指针吗?

  2. 如果是,f 指向什么?文件结构中为第一个字节保留的空白空间?

  3. 我可以假设文件结构是零索引的吗?

  4. 在微处理器中,我了解到指针始终指向下一条指令。它在 python 中如何?如果我在文件中写一个字符 say 'b',我的文件指针会指向字符 'b' 还是指向 'b' 旁边的位置?

最佳答案

您无需指定版本,文件对象在 Python 2 和 Python 3 中的行为略有不同。总体思路相同,但一些具体细节有所不同。以下假设您使用的是 Python 3,或者您使用的是 Python 2.6 或 2.7 中 io 模块的 open 版本,而不是 Python 2 的内置 open


它不是一个文件指针,尽管它很有可能是在幕后实现的。与 C 不同,Python 不公开指针的概念。

但是,您似乎想到的是“流位置”,它有点类似于指针。这是 tell() 报告的数字,可以将其输入 seek()。对于二进制文件,它是距文件开头的字节偏移量。在文本文件中,它只是对文件对象有意义的“偏移量”——文档称它为“不透明数字”(即,它没有定义物理意义存储在磁盘上)。但在这两种情况下,它都是从起点开始的偏移量,因此起点为零。这仅在文件支持随机访问时才是正确的——你通常会支持,但要做好最终遇到你不支持的情况的准备——在这种情况下,seektell 引发错误。

与处理器中的指令指针一样,流位置是下一个 操作的开始位置,而不是当前操作结束的位置。所以,是的,在您将一个字符串写入文件后,当前位置通常是该位置之后的一个偏移值。

当您刚刚打开一个文件时,偏移量通常为零或文件末尾(比您在没有 EOF 的情况下可以读取的最大值高一个)。如果您以 'r' 模式打开它,它将为零,如果您以 'a' 模式打开它,则结束,并且两者对于 'w' 和 'w+' 模式是等效的,因为它们将文件截断为零字节。

关于python - python中的文件指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com