我有一個Python中的函數,它需要一個「閱讀器」(我希望這是正確的術語)。基本上,函數應該能夠使用文件,sys.stdin等。然後,它必須讀取所有行並將它們存儲在一個字符串中。閱讀從python到閱讀器的輸入字符串
目前我的函數調用看起來是這樣的:
read_data (sys.stdin, sys.stdout)
read_data ("file.txt", "fileout.txt")
和本身看起來像功能:
def read_data (reader, s) :
str = ""
str = r.readline()
line = str
while line != "" and line != None and line != '\n':
line = r.readline()
str = str + line
當我運行的代碼,輸入粘貼到控制檯來實際測試,它能夠讀取所有行,包括最後一行,但之後它會卡在「line = readline()」中。我不知道我做錯了什麼,任何幫助將不勝感激。謝謝
FWIW我認爲你要找的術語是'IO'對象。 [Duck-wise](http://en.wikipedia.org/wiki/Duck_typing),你基本上在尋找任何實現['readline']的對象(http://docs.python.org/2/library /io.html#io-base-classes) – kojiro
如果你在windows上,你可能需要添加'和line!='\ r \ n''。爲了簡單起見,你可能需要將if改爲'if'in line in [「」,...]:' –
@LaurIvan我建議將檢測到文件結尾檢測到操作系統,即。到python庫。上面的解決方案也會在滿足空行時停止讀取輸入文件,即。不在EOF。猜猜這是OP的意圖。 –