2013-03-07 79 views
0

我在使用Python讀取文件時遇到問題。無法讀取Python中的完整文本文件

我在Python中讀取的文件大小爲90 Mb。單詞打開時,表明單詞總數約爲1400萬。但是當我用Python讀取文件時,它給我的文件長度約爲900萬字(8,915,710字)。

當我檢查通過python命令來查看文件中的最後100個字

print "The length of the Corpus is ", len(tokens), tokens[-100:] 

我只能從繞過原始文件的中間字。

我使用的是64位Windows操作系統和32位版本的Python。

PC規格:酷睿i7,1.8Gz,6GB RAM

我想明白爲什麼Python的拒絕讀取超出8915710個字。

感謝

CODE:

f = open('testtext.txt') 
raw = f.read() 
corp = lowercase(raw) 
tokens = nltk.word_tokenize(corp) 
print "The number of words is ", len(tokens), tokens[-100:] 
print "corp ", len(corp) 
print "raw ", len(raw) 

我得到以下答案:

>> The number of words is 8915710 
>> corp 53322476 
>> raw 53322476 
+5

這將是幾乎不可能沒有看到[實際代碼]回答(http://sscce.org/) – phihag 2013-03-07 22:38:25

+3

有,爲什麼你需要一些實際的原因一次將文件讀入內存?爲什麼不只是逐行掃描它們,例如'for line in f:do_smth(line)' – msvalkon 2013-03-07 22:39:39

+0

你能打印出值'len(raw)'和'len(corp)'嗎? – 2013-03-07 22:52:43

回答

1

替換此行:

f = open('testtext.txt') 

這一行:

f = open('testtext.txt', 'rb') 
+0

我做到了,我得到了15205560個單詞...但是現在如何從二進制文件讀取它們並讀取最後一個單詞並檢查它? – user1799092 2013-03-07 23:25:57

+0

但爲什麼處理二進制文件?有什麼特別的原因嗎? – alvas 2013-03-12 04:38:48

+0

因爲它有一個控制-Z,這意味着它是一個二進制文件,而不是文本文件。什麼程序創建該文件? – 2013-03-12 04:51:28

0

嘗試處理文件爲二進制:

f = open('file.txt', "rb") 
chunkSize = 1024 
dataChunk = f.read(chunkSize) 
while len(dataChunk): 
    processData(dataChunk) 
    dataChunk = f.read(chunkSize)