2017-02-16 4 views
-3

В настоящее время я беру код в классе Python и пытаюсь прочитать из созданного извне файла .txt с помощью команды readline. Мой код ниже (комментарии удалены):Python Loop Only Parses Первые пять строк текстового файла

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, сценарий выводит весь файл, а затем большое количество пробелов.

+2

Вы должны стремиться к лучшему титулу. Представьте себе сайт, на котором каждый заголовок был похож на ваш, и то, что читала бы на первой странице. – miradulo

+1

Сколько символов в первой строке файла? – TigerhawkT3

+2

'for line in fileline' перебирает символы линии, а не перебирает строки. – Barmar

ответ

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 
+0

EDITED RESPONSE- ДА! я изначально был как «О, это всего четыре цифры», но затем @ TigerhawkT3 напомнил мне о символах новой строки! Спасибо за решение моей проблемы! –

+0

'fileline' - это строка,' line' - всего один символ в строке. – Barmar

+0

Или 'для строки, _ в zip (файл, диапазон (5)): print (line)'. – TigerhawkT3

Смежные вопросы