Python 循环仅解析文本文件的前五行

Python Loop Only Parses First Five Lines of Text File

我正在尝试使用 readline 函数在 Python 中逐行读取和打印 .txt 文件。下面的代码旨在逐行打印出整个文本文件,但截至目前,它只打印出文本文件的前五行。

filename = input("Enter the name and extension of the file you want to open.")
file = open(filename, "r")
fileline = file.readline()
for line in fileline:
    fileline = fileline.rstrip("\n")
    print(fileline)
    fileline = file.readline()
file.close()

我希望代码逐行打印出整个文件,但它目前只打印出前五行。代码中的错误是什么?

这一行:

for line in fileline:

循环遍历 fileline 的字符,其中包含文件的第一行。所以如果第一行有5个字符,这个循环会执行5次。

然后在循环内,打印该行,然后将下一行读入 fileline 变量。这对循环没有影响,它仍在迭代第一行中的字符。

要让程序有意打印前 5 行,您可以这样做:

for i in range(5):
    fileline = file.readline()
    if (fileline == ''): #end of file reached
        break
    print(fileline.rtrim('\n'))

或者您可以遍历 file,它会自动读取行,并使用单独的计数器变量

i = 0
for line in file:
    print(line.rtrim('\n'))
    i += 1
    if i == 5:
        break