2013-03-23 14 views
0

我有使用Python中的PyDev爲Eclipse,好吧3.3工作,所以這是我的代碼:的Python 3.3 readlines方法截斷文本文件

countdata = open(countfilename, 'r') 
countlist = countdata.readlines() 
print(len(countlist)) 
genecountline = wordlist(countlist[-1]) 
print(genecountline) 

countfilename指的是從產生的7847線相當長的文本文件一個文本文件,使用我的機器學習課程中的教師給我的腳本(我必須使用2to3將所述腳本轉換爲Python 3)。

wordlist是我構建的一個簡單的函數,它接受一行文本並將其中的單詞作爲列表返回。

我把整個文件拖入一行代碼中,這樣我就可以隨意引用特定的行來進行計算。無論我在所有readlines方法讀取它們一次或遍歷文件,並通過一個這樣的行添加到列表中的一個:

countdata = open(countfilename, 'r') 
countlist = [] 
for line in countdata: 
    countlist.append(line) 

無所謂。無論哪種方式,我這樣做,print(len(countlist))給我大約7630,我說大約是因爲有時它低至7628或高達7633。由countlist[-1]返回的特定行總是不同的(該文件是使用生成器對象構建的,正如我的教師構建該腳本並且我不完全確定它是如何工作的)。

genecountline = wordlist(countlist[-1]) 
print(genecountline) 

我只是想看看python認爲文件的最後一行是什麼。當我在文本板中打開文件時,它返回的行實際上是由len(countlist)返回的行號。換句話說,它似乎忽略了最後一個約。我的文件有210行。所以我的問題是如何解決這個問題,以及如何防止它再次這樣做?

+0

添加'wordlist()'的代碼可能有助於解決問題 – MattDMo 2013-03-23 20:13:12

回答

1

如果你不是從一個靜態文本文件,而是從產生每次運行程序時的一個閱讀,這可能是因爲您不關閉該文件(在這種情況下,一切也許沒有被寫入它)。如果你不想關閉它,你可以刷新它(.flush()方法)。

您應該發佈生成該文件的代碼。

+0

的確,我忘了在寫入文件後關閉它!今天我一定花了4個小時試圖解決這個問題,謝謝。 – whiplashomega 2013-03-23 20:38:55