python - uma - Leia apenas a primeira linha de um arquivo?




split arquivo python (6)

Como você obteria apenas a primeira linha de um arquivo como uma string com o Python?


Isso deve servir:

f = open('myfile.txt')
first = f.readline()

Muitas outras respostas aqui, mas para responder precisamente a pergunta que você fez (antes do @MarkAmery ter editado a pergunta original e mudado o significado):

>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]

Em outras palavras, se você já leu no arquivo (como você disse), e tem um grande bloco de dados na memória, então para obter a primeira linha de forma eficiente, faça um split () no caractere de nova linha, uma vez somente, e pegue o primeiro elemento da lista resultante.

Note que isto não inclui o caractere \n no final da linha, mas eu estou supondo que você não o queira de qualquer maneira (e um arquivo de linha única pode nem ter um). Note também que, embora seja muito curto e rápido, ele faz uma cópia dos dados, então, para uma grande quantidade de memória, você pode não considerá-la "eficiente". Como sempre, depende ...


Solução 1:

with open('input_file.txt') as input_file:
    lines=input_file.readlines()
    for line_no, line in enumerate(lines):
        if line_no == 0:
            print(line)
            break
  • lines contém todas as linhas do input_file.txt
  • line_no fornecerá o número da linha dos arquivos
  • se o line_no for 0, a primeira linha será impressa quando o índice começar a partir de 0
  • Da mesma forma, se você quiser segunda linha, você pode escrever if line_no==1

Solução 2:

with open('input_file.txt') as input_file:
    lines=input_file.readlines()
    first_line=lines[0]
    print(first_line)
  • lines[0] é a primeira linha.
  • Da mesma forma, lines[1] é a segunda linha

Solução 3:

Imprima as primeiras N linhas. Substitua N por qualquer número. Se você quiser primeira linha, então N = 1

from itertools import islice

with open('my_file.txt','r') as my_file:
    head = list(islice(my_file, N))
    print(head)

Este é o código equivalente da head comando unix

Solução 4:

with open('input.txt', 'r') as fin:
    head, tail = fin.read().split('\n', 1)
    print(head)
    #print(tail)

Use o método .readline() ( documentos do Python 2 , documentos do Python 3 ):

with open('myfile.txt') as f:
    first_line = f.readline()

Algumas notas:

  1. Conforme observado nos documentos, a menos que seja a única linha no arquivo, a string retornada de f.readline() conterá uma nova linha à direita. Você pode querer usar f.readline().strip() para remover a nova linha.
  2. A instrução with fecha automaticamente o arquivo novamente quando o bloco termina.
  3. A instrução with funciona somente no Python 2.5 e superior, e no Python 2.5 você precisa usar from __future__ import with_statement
  4. No Python 3, você deve especificar a codificação de arquivo para o arquivo que você abrir. Consulte Mais informação...

first_line = next(open(filename))

fline=open("myfile").readline().rstrip()






file