Как прочитать определенную часть большого файла в Python
Учитывая большой файл (сотни МБ), как я могу использовать Python для быстрого чтения содержимого между конкретным индексом начала и конца в файле?
По сути, я ищу более эффективный способ:
open(filename).read()[start_index:end_index]
Ответ 1
Вы можете seek добавить в файл файл, а затем прочитать определенную сумму оттуда. Seek позволяет вам получить определенное смещение внутри файла, а затем вы можете ограничить чтение только количеством байтов в этом диапазоне.
with open(filename) as fin:
fin.seek(start_index)
data = fin.read(end_index - start_index)
Это будет читать только те данные, которые вы ищете.
Ответ 2
Это мое решение с кодированием переменной ширины. Мой CSV файл содержит словарь, в котором каждая строка является новым элементом.
def get_stuff(filename, count, start_index):
with open(filename, 'r') as infile:
reader = csv.reader(infile)
num = 0
for idx, row in enumerate(reader):
if idx >= start_index-1:
if num >= count:
return
else:
yield row
num += 1