Я имею дело с большим файлом (> 500 ГБ, несколько столбцов, но несколько строк), и мне нужно получить оттуда несколько строк.У меня есть этот список начальных и конечных байтов (измеряется от начала файла) для частей, которые мне нужны, что-то вроде:
A,0,500
B,1089,4899
Вот что: я должен сделать это около 1,2 М раз,Что лучше для производительности: всегда начинать с начала документа или считать с текущей позиции?Так что это будет что-то вроде:
with open(large_file, 'r') as f:
for start_byte, end_byte in byte_list:
f.seek(start_byte) # always start from beginning of file
chunk_str = f.read(end_byte-start_byte)
или
with open(large_file, 'r') as f:
current_pos = 0
for start_byte, end_byte in byte_list:
f.seek(start_byte - current_pos, 1) # seek from current position
chunk_str = f.read(end_byte-start_byte)
current_pos = end_byte
Или это вообще имеет значение?Я прочитал Как работает функция поиска в Python? , но у меня недостаточно технических навыков, чтобы понять, как это повлияет на чтение очень больших текстовых файлов.