2012-12-03 24 views
0

的代碼,我現在的問題是這如何從只使用readline的文件讀取()

f = open(SINGLE_FILENAME) 
lines = [i for i in f.readlines()] 

但我proffessor要求是

您可以使用的ReadLine()。你可能不會使用read(),readlines()或迭代使用for的打開文件。

有什麼建議嗎? 感謝

+0

注:'線= f.readlines()'做同樣的(產生的列表線)。一個懶惰版本:'lines = f'(文件本身就是一個迭代器)。你在哪裏學習過'line = [i for f.readlines()]'(使用它是沒有意義的)?我已經多次看過這樣的代碼,我對它背後的起源或邏輯有什麼感興趣。 – jfs

回答

3

第一稿:

lines = [] 
with open(SINGLE_FILENAME) as f: 
    while True: 
     line = f.readline() 
     if line: 
      lines.append(line) 
     else: 
      break 

我感到相當肯定有更好的方式來做到這一點,但是這並避免與迭代,使用讀,或使用readlines方法。

您可以編寫一個生成器函數來繼續調用readline(),直到該文件爲空,但在這裏看起來並沒有太大的改進。

+0

非常感謝,這真的很好 – user1870662

+0

這是根據我的經驗,幾乎可以肯定教授想要什麼;巧合的是,這種情況是你會發現教授無能的最簡單的示範之一。 –

相關問題