Я заметил какое-то странное поведение, которое сегодня играет с next()
и readline()
. Кажется, что обе функции дают одинаковые результаты (что я и ожидаю). Однако, когда я их смешиваю, я получаю ValueError
. Вот что я сделал:
>>> f = open("text.txt", 'r')
>>> f.readline()
'line 0\n'
>>> f.readline()
'line 1\n'
>>> f.readline()
'line 2\n'
>>> f.next()
'line 3\n'
>>> f.next()
'line 4\n'
>>> f.readline()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Mixing iteration and read methods would lose data
>>>
>>> f = open("text.txt", 'r')
>>> f.next()
'line 0\n'
>>> f.next()
'line 1\n'
>>> f.next()
'line 2\n'
>>> f.readline()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Mixing iteration and read methods would lose data
Итак, общий вопрос здесь , что происходит под капотом, который вызывает эту ошибку?
Некоторые вопросы, на которые можно получить ответы, но я хотел бы услышать ответ, если нет:
- В чем разница между
next()
иreadline()
? - Когда я делаю
for f in file:
, какую функцию я вызываю (и это имеет значение)? - Почему я могу вызвать
next()
послеreadline()
, но не наоборот?
Спасибо заранее,
Я не думаю, что это важно, но если это зависит от версии, я нахожусь на Python 2.7.6 для Windows