Python循环只解析前五行文本文件

时间:2017-02-16 22:33:14

标签: python file readline

我正在使用Python类编写代码,并尝试使用.txt命令从外部创建的readline文件中读取。我的代码如下(删除了注释):

    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()

我希望代码逐行打印出整个文件,但它目前只打印出前五行。为什么循环不像我预期的那样工作?

此外,如果您将readline的所有实例更改为read,脚本将输出整个文件,然后输出大量空白区域。

1 个答案:

答案 0 :(得分:3)

这一行:

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