我注意到一些奇怪的行爲今天next()
和readline()
玩耍。看來,這兩個函數產生相同的結果(這是我所期望的)。然而,當我混合他們,我得到一個ValueError
。下面是我所做的:混合file.readline()和file.next()
>>> 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
在Python 3,混合'下一個(F)'和'f.readline()'是允許的,雖然。 –
@SvenMarnach你怎麼知道?請參閱Python文檔。 –
@ patryk.beza你將不得不相信我。 :)我不認爲這是明確記錄。我通過閱讀源代碼瞭解它。Python 3有一個全新的I/O層,'__next __()'或者調用'readline()',或者被實現爲完全相同。 –