我正在处理庞大的数据 CSV 文件。每个文件包含数百万条记录,每条记录都有一个键。记录按他们的键排序。在搜索 certian 数据时,我不想遍历整个文件。 我见过这个解决方案:Reading Huge File in Python
但它建议您在文件中使用相同长度的行 - 在我的情况下不支持。
我想过给每一行添加一个填充,然后保持固定的行长,但我想知道是否有更好的方法来做到这一点。
我正在使用 python
最佳答案
您不必拥有固定宽度的记录,因为您不必进行面向记录的搜索。相反,您可以只进行面向字节的搜索,并确保在进行搜索时重新对齐键。这是一个(可能有错误的)示例,说明如何将您链接到的解决方案从面向记录修改为面向字节:
bytes = 24935502 # number of entries
for i, search in enumerate(list): # list contains the list of search keys
left, right = 0, bytes - 1
key = None
while key != search and left <= right:
mid = (left + right) / 2
fin.seek(mid)
# now realign to a record
if mid:
fin.readline()
key, value = map(int, fin.readline().split())
if search > key:
left = mid + 1
else:
right = mid - 1
if key != search:
value = None # for when search key is not found
search.result = value # store the result of the search
关于python - 对行长度未知的大文件进行二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369175/