1 with open('a.csv','r') as f: 2 #1 3 for i in f: 4 print(i) 5 #2 6 while True: 7 a = f.readline() 8 if not a: 9 break 10 #3 11 f.readlines()
用with語句打開文件返回一個可以迭代的文件對象綁定在as后的變量f;
第一種:直接遍歷文件對象,會自動使用IO緩存和內存管理,是一種很好的方法;
第二種:調用readline()方法,一次讀取一行,也不會占用太大內存,但代碼顯得臃腫,而且,雖然readline()方法是用C實現的,但相比於1的直接操作文件對象,速度上並沒有明顯的提升;
第三種:調用readlines()方法,返回的是一個包含所有文件元素的列表,如果文件很大(1個G),那就很占用內存,所以大文件情況下,最不推薦這種方法。
綜上:推薦第一種寫法,即直接遍歷文件對象。
另外,還可以用pandas提供的分塊讀取功能,下一篇詳細介紹。