python перебирает входной файл

Мой вопрос связан с вводом файла -в Python с использованием open(). У меня есть текстовый файл mytext.txtс 3 строками. Я пытаюсь сделать с этим файлом две вещи :: распечатать строки и распечатать количество строк.

Я попробовал следующий код:

input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
    print line
for line in input_file:
    count_lines += 1
print 'number of lines:', count_lines

Результат :он печатает 3 строки правильно, но печатает «количество строк :0» (вместо 3)


Я нашел два способа решить эту проблему и заставить ее распечатать3:

1 )Я использую одну петлю вместо двух

input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
    print line
    count_lines += 1
print 'number of lines:', count_lines

2 )после первого цикла я снова определяю входной файл _

input_file = open('mytext.txt', 'r')
count_lines = 0
for line in input_file:
    print line
input_file = open('mytext.txt', 'r')
for line in input_file:
    count_lines += 1
print 'number of lines:', count_lines

Мне кажется, что определение input_file =...действительно только для одного цикла, как будто оно было удалено после того, как я использовал его для цикла. Но я не понимаю, почему, наверное, мне еще не ясно на 100%, как variable = open(filename)обрабатывается в Python.

Кстати, я вижу, что в этом случае лучше использовать только одну петлю. Тем не менее, я чувствую, что должен прояснить этот вопрос, поскольку могут быть случаи, когда я могу/должен его использовать.

14
задан MERose 29 March 2016 в 14:01
поделиться