【问题标题】:Python input/Output explanationPython输入/输出说明
【发布时间】:2014-06-24 03:49:34
【问题描述】:
      my_file = open("text.txt", "r")
      print my_file.readline()
      print my_file.readline()
      print my_file.readline()
      my_file.close()

我了解/如何打印出文本文件的前三行,但我不完全确定为什么。既然我打印出了 my_file.readline(),为什么它不打印出所有 3 次的第一行呢?

【问题讨论】:

  • 大多数其他语言都会做同样的事情。从文件中读取会推进当前文件位置。
  • 注意,这是标准的“顺序读取”。每次连续读取都会在之前读取的内容之后选择一个新片段,如果您想要文件的特定片段,则需要“倒回”到适当的位置。如果您想像访问变量一样访问文件,请查看mmap,它将文件映射到内存地址,使其像一块 RAM 一样访问。

标签: python file input output readline


【解决方案1】:

Python 读取文件并将其存储在变量my_file 中,指针位于文件开头或(0, 0)。当您开始执行readline 时,python 将从文件中读取一行,然后“使用”它。换句话说,当前指针现在将在下一行等待,因此当您调用 readline 时,它现在将获得下一行。

希望有帮助

您所期望的等价物是:

my_file = open("text.txt", "r")
print my_file.readline()
my_file.seek(0, 0)
print my_file.readline()
my_file.seek(0, 0)
print my_file.readline()
my_file.close()

在上述情况下,seek(0, 0) 调用在每个readline 之后将指针的位置重置为文件的开头,因此在这种情况下,您最终将打印第一行 3 次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多