【问题标题】:How does for loop print all the line of a text file without using readline()for循环如何在不使用readline()的情况下打印文本文件的所有行
【发布时间】:2020-11-03 04:59:31
【问题描述】:

我正在研究文件部分,我对下面的代码感到困惑。

def printAllLines(fileObject):
        for line in fileObject:
                 print(line, end = "")

在这种情况下,一行的迭代是否等于原始文本文件的一行?

文本文件中有索引吗?

我可以将纯文本文件视为包含多个项目的列表吗?

而且每一项都包含一行文字?

【问题讨论】:

  • 第一次看到它会让人困惑,但它非常有用。当您遍历它时,任何 Python 对象都可以显示特殊行为。对于列表和元组,我们一次显示一个项目。对于文件对象,决定遍历它一次显示一行。
  • 文本文件也是所谓的“迭代器”,如果被问到,它可以逐行返回内容。 G。通过for循环。每个打开的文件都有一个文件指针来定义下一次读取或写入的位置。
  • 糟糕。全面回答您的问题。没有索引。一行以换行符结束。 Python 几乎(有效地)读取字符,直到它看到换行符并调用它得到的“行”并返回它。

标签: python file for-loop


【解决方案1】:

通过 Python 中的open() 函数创建的文件对象是包含文件每一行的对象。对于文本文件,它是一个typing.TextIO 对象;如果这是一个二进制文件,它将是typing.BinaryIO。这个对象是可迭代的,但不能被索引,因为它没有定义___getitem___

TL;DR:您可以考虑使用for 循环作为语法糖来索引文件;你可以减少使用它的线路,但不要想太多。

回答您的每个问题:

  • 是的,line in fileObject 的每次迭代都是文本文件的一行。

  • 不,如果没有 readline() 或其他函数,您无法索引文本文件。例如,您不能使用fileObject[1]

  • 不要这样想。将这种索引文件的格式视为一种有用的技巧。

希望这能完全回答您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多