[英]How does readline() function really work in Python?
在您的代碼中:
handle = open('TestFile','r')
for line in handle:
print(handle.readline())
句柄中的for line in handle
handle
讀取了一行。 然后,您使用handle.readline()
讀取下一行並打印出來。 每次迭代都會發生這種情況,因此您只能獲得每第二行。
你要:
handle = open('TestFile','r')
for line in handle:
print(line)
此外,您希望關閉文件,理想情況下您希望確保它們關閉而不必擔心自己關閉它們,這就是上下文管理器的用途。 聽起來很復雜,其實很簡單:
with open('TestFile', 'r') as handle:
for line in handle:
print(line)
這是有效的,因為像handle
這樣的文件句柄也是一個迭代器並提供了一個__next__
方法。 這意味着您可以使用for
循環它,它會一次生成一個元素的內容。 對於文本文件,這意味着每次調用其__next__
方法時,無論是作為next(handle)
還是在使用for
循環時,它都會讀取一行並生成它。
with
塊確保handle
在退出with
塊后立即關閉。
最后,您可能最終會想知道為什么您的行打印在它們之間有一個空行。 那是因為您的文件是一個文本文件,其中行由某種行尾字符(或 Windows 上的字符)分隔。
擺脫這些的一種方法是從行尾去除空格:
with open('TestFile', 'r') as handle:
for line in handle:
print(line.rstrip())
另一種方法是讀取整個文件,分割行尾,結果行將不再有行尾:
with open('TestFile', 'r') as handle:
for line in handle.read().splitlines():
print(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.