Мой вопрос связан с вводом файлов в 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
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 = ...
допустимо только для одного цикла, как если бы он был удален после использования его для цикла. Но я не понимаю, почему, возможно, мне это пока еще не ясно, как variable = open(filename)
обрабатывается в Python.
Кстати, я вижу, что в этом случае лучше использовать только один цикл. Тем не менее, я чувствую, что мне нужно понять этот вопрос, поскольку могут быть случаи, когда я могу/должен его использовать.