2014-03-13 38 views
-2

這裏有很多二進制搜索的幫助,但找不到這個特定的問題。這就是我在IDLE中得到的結果,同樣的事情發生在我的代碼中。Python二進制搜索readline不會返回整行

首先,我找到要被搜索的文件的文件大小(每一行是兩個整數,由製表符分隔和排序條件爲第一整數):

>>> import os 
>>> a=os.path.getsize("C:\\testfile.txt") 
>>> a 
9341L 

打開文件

>>> f = open("C:\\testfile.txt",'r') 

尋求到文件的中間

>>> f.seek(int(a/2)) 
'\n' 

(做的二進制搜索等測試之前)的行應'534\t1026\n'

即不是整行,而是從'seek'點開始的其餘行。我找到的二進制搜索代碼似乎都沒有說如何爲每個新的「搜索」獲取整個行。

感謝,

S.

解決了,感謝休。

+0

對不起,我投下了。你甚至搜索瞭解什麼獲取回報?嘗試谷歌搜索os.path.getsize – PyNEwbie

+0

我沒有意識到getsize是問題。問題是readline()上的所有信息都表示它讀取整行,而不是隻讀取行的其餘部分。 Hugh的解決方案似乎很簡單,只需執行兩次readline()。 – suze1992

回答

1

(聳肩)的十個字符行,有90%的機會,隨機讀取將在一行中間開始。

我建議你開始閱讀十個字符 - 第一個readline()可能會得到一個部分行,第二個readline()將得到第一個保證完整行。