Я имею дело с большими данными, поэтому поиск хорошего способа чтения данных действительно важен.Я просто немного озадачен различными методами чтения.
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
может не работать, я прав?