Я имею дело с большими данными, поэтому очень важно найти хороший способ чтения данных. Я просто немного запутался в разных методах чтения.
1.f=gzip.open(file,'r')
for line in f:
process line
#how can I process nth line? can I?
2.f=gzip.open(file,'r').readlines()
#f is a list
f[10000]
#we can process nth line
3.f=gzip.open(file,'r')
while True:
linelist=list(islice(f,4))
4.for line in fileinput.input():
process line
В чем разница между 2 и 3? Я просто считаю, что их использование памяти такое же. islice () также необходимо сначала загрузить в память весь файл (но позже будет выполняться по частям). И я слышал, что 4-й метод наименее потребляет память, он действительно обрабатывается по крупицам, верно? Какой метод чтения файлов вы порекомендуете для файла размером 10 ГБ? Любая мысль / информация приветствуются. thx
edit: Я думаю, что одна из моих проблем в том, что мне иногда нужно выбирать определенные строки случайным образом. скажи:
f1=open(inputfile1, 'r')
while True:
line_group1 = list(islice(f1, 3))
if not line_group1:
break
#then process specific lines say, the second line.
processed 2nd line
if ( ....):
LIST1.append(line_group1[0])
LIST1.append(processed 2nd line)
LIST1.append(line_group1[2])
А потом что-то. вроде
with open(file,'r') as f,
for line in f:
# process line
может не работать, я прав?