这里有很多关于二进制搜索的帮助,但无法找到这个特定问题。这就是我在IDLE中得到的结果,同样的事情发生在我的代码中。
首先,我找到要搜索的文件的文件大小(每行是两个整数,由制表符分隔并按第一个整数排序):
>>> 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'
即。不是整条线,而是从“寻找”开始的其余部分。点。我找到的二进制搜索代码似乎都没有说明如何为每个新的搜索提供整行。
谢谢,
S上。
解决了,谢谢Hugh。
答案 0 :(得分:1)
(耸肩)对于十个字符的行,有一个90%的可能性随机读取将在一行中间开始。
我建议你提前开始阅读10个字符 - 第一个readline()可能会得到一个部分行,第二个readline()将获得第一个保证的满行。