У меня есть файл среднего размера (25 МБ, 1000000 строк), и я хочу прочитать каждую строку, кроме каждой третьей строки.
ПЕРВЫЙ ВОПРОС : быстрее ли загружатьвесь файл в память и затем читать строки (метод .read()
) или загружать и читать по одной строке за раз (метод .readline()
)?
Так как я не опытный кодер, я попробовал второйопция с методом islice
из модуля itertools
.
import intertools
with open(input_file) as inp:
inp_atomtype = itertools.islice(inp, 0, 40, 3)
inp_atomdata = itertools.islice(inp, 1, 40, 3)
for atomtype, atomdata in itertools.zip_longest(inp_atomtype, inp_atomdata):
print(atomtype + atomdata)
Несмотря на то, что при циклическом прохождении через один генератор (inp_atomtype
или inp_atomdata
) печатаются правильные данные, проходящие через оба одновременно (как в этом коде) печатает неверные данные.
ВТОРОЙ ВОПРОС : Как получить нужные строки с помощью генераторов?