2013-10-22 34 views
-2

我試圖在文件末尾讀取帶有空行的文本文件,並且需要將這些行放入列表中。在閱讀文本文件結束時得到None

文本文件看起來是這樣的:

這是第一線
這是第二行
*
(*爲表示空行)

我讀文本文件一樣這個:

read_str = file.readlines() 
print(read_str) 

它給了我想要的清單,這很好,但最後它說「無」。像這樣:

['this is the first line\n', 'this is the second line\n'] 
None 

爲什麼它在最後給我「無」,我該如何解決這個問題?

+1

你能粘貼在這裏所有的代碼? –

+3

我有一種感覺,你發佈的代碼是在一個函數內,不會返回任何東西。然後你可以打印my_function_that_doesnt_return_anything()'。這通常是這類問題的原因。 – Kevin

+0

相關:[基本python函數的隨機'None'輸出](http://stackoverflow.com/questions/7053652/random-none-output-from-basic-python-function) –

回答

0

第三行是空白的?所以文件以換行符結束,然後沒有別的?這正是你所展示的輸出!如果您想要數組中的第三個條目,則向文件中的空行添加一個空格。不知道你爲什麼想這樣做。

你想用你的代碼實現什麼?包括您沒有向我們展示的代碼...

+0

提問者對神祕的'無',而不是名單的內容感到困惑。 – Tim

1

正如Kevin指出的那樣,我認爲這與您的print函數打印(副作用)有關,然後返回None(所有Python函數都沒有顯式返回聲明)。

例如:

>>> x = 3 
>>> print(x) 
3 
>>> print(print(x)) 
3 
None 
+0

True: 'def printFile(): \t f = open(「abc.txt」) \t lines = f。readlines方法() \t線路在線路: \t \t打印line' ,把它作爲: '打印printFile()'在年底給我'None'。在我改成只是'printFile()'後,它沒有打印額外的'None' – HunterrJ

0

好像你有一個錯誤在那裏。您必須在文本編輯器中省略最後一行,因爲使用與您指定的輸入相同的輸入,它應該以下列行爲輸出。

with open("test.txt", "r") as f: 
    f.readlines() 

輸出:

['this is the first line\n', 'this is the second line\n', '\n'] 
+1

該代碼不應該給出該輸出;沒有'印刷品'。 – DSM

+0

它不會輸出它,也不會打印,捕獲或保存調用'f.readlines()'的結果 - 但是你說的正確的是返回值是什麼。 – martineau