方法一:python
with open("test_read.txt") as f: for i, v in enumerate(f): print i, ":", v print "-" * 50
方法二:code
with open("test_read.txt") as f: for i, v in enumerate(f.readlines()): print i, ":", v print "-" * 50
說明: 一、for i, v in enumerate(f) 語句將 file 對象轉換成 iterable object ,既然是可迭代對象,一次只加載一個 item ,解釋器不會將全部 items 放進內存,所以節省了資源。在 python 2.3 之前,要用 f.xreadlines()方法讀大文件,它和 xrange 的做用同樣,都是處理 iter(object),但在 2.3 後,官方明確用 for line in f 讀取大文件。對象
二、for i, v in enumerate(f.readlines()) 語句和第一個相似,可是它先執行 f.readlines(),直接把 file 對象中全部的 line items 列表存進內存,在它們之上進行循環讀取。 所以,讀取大文件時用第一個語句,通常小文件這兩個均可以內存