2017-05-17 117 views
0

我需要迭代幾次文本文件的幾行。 這是目前與多個Python文件io緩衝

with open("file.txt") as f: 
    for line in f: 
     # do something 

做雖然性能沒有問題,我想只有一次讀取文件到io.StringIO緩衝區中,然後與工作。

的Python io文檔:

這是一個工作片斷

import io 
sio = io.StringIO(open("file.txt").read()) 
for line in sio: 
    print(line) 
sio.seek(0) 
for line in sio: 
    print(line) 
sio.close() 

或在with聲明它包裹context manager

import io 
with io.StringIO(open("file.txt").read()) as sio: 
    for line in sio: 
     print(line) 
    sio.seek(0) 
    for line in sio: 
     print(line) 
    #sio.close() 

問題

  1. 這是一個「好」的做法,有什麼選擇?
  2. 用於讀取文件的文件對象會發生什麼(沒有辦法通過這種方式明確地使用close())?
  3. 我在哪裏可以閱讀更多關於Python的io緩衝(我想我會通過自動緩衝來閱讀關於優化多個文件訪問的Python)?

回答

-1

你在做什麼已經是正確的方法。從這個答案引用:How to read large file, line by line in python

with語句處理打開和關閉文件,其中包括了一個異常在內部塊中引發。 for line in f將文件對象f視爲一個迭代器,它會自動使用緩衝IO和內存管理,因此您不必擔心大文件。

+0

是的,但我的問題是關於處理文件_multiple_次。是否應該多次打開()?也沒有關於緩衝的參考。 – handle