Подтвердить что ты не робот

Элегантный способ пропустить первую строку при использовании модуля python fileinput?

Есть ли элегантный способ пропустить первую строку файла при использовании python fileinput module?

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

Проблема заключается в том, что она применит ту же проверку для остальной части файла. С помощью read() вы можете открыть файл, прочитать первую строку, затем перейти к циклу над остальной частью файла. Есть ли подобный трюк с fileinput?

Есть ли элегантный способ пропустить обработку первой строки?

Пример кода:

import fileinput

# how to skip first line elegantly?

for line in fileinput.input(["file.dat"]):
    data = proces_line(line);
    output(data)
4b9b3361

Ответ 1

Модуль fileinput содержит кучу удобных функций, один из которых, похоже, делает именно то, что вы ищете:

for line in fileinput.input(["file.dat"]):
  if not fileinput.isfirstline():
    data = proces_line(line);
    output(data)

документация к файловому модулю

Ответ 2

lines = iter(fileinput.input(["file.dat"]))
next(lines) # extract and discard first line
for line in lines:
    data = proces_line(line)
    output(data)

или используйте способ itertools.islice, если вы предпочитаете

import itertools
finput = fileinput.input(["file.dat"])
lines = itertools.islice(finput, 1, None) # cuts off first line
dataset = (process_line(line) for line in lines)
results = [output(data) for data in dataset]

Так как все используемое - генераторы и итераторы, промежуточный список не будет создан.