Различные способы чтения больших данных в python

Я имею дело с большими данными, поэтому очень важно найти хороший способ чтения данных. Я просто немного запутался в разных методах чтения.

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

может не работать, я прав?

6
задан LookIntoEast 10 December 2011 в 02:27
поделиться