Como você obteria apenas a primeira linha de um arquivo como uma string com Python?
Como você obteria apenas a primeira linha de um arquivo como uma string com Python?
Respostas:
Use o .readline()
método ( documentos Python 2 , documentos Python 3 ):
with open('myfile.txt') as f:
first_line = f.readline()
Algumas notas:
f.readline()
conterá uma nova linha à direita. Você pode usar f.readline().strip()
para remover a nova linha.with
instrução fecha automaticamente o arquivo novamente quando o bloco termina.with
instrução funciona apenas no Python 2.5 e superior, e no Python 2.5 você precisa usarfrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
é melhor.
fline=open("myfile").readline().rstrip()
rstrip()
remove o caractere de nova linha.
Isso deve servir:
f = open('myfile.txt')
first = f.readline()
Para voltar ao início de um arquivo aberto e retornar a primeira linha, faça o seguinte:
my_file.seek(0)
first_line = my_file.readline()
Muitas outras respostas aqui, mas para responder com precisão à pergunta que você fez (antes do @MarkAmery editar a pergunta original e alterar 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 o arquivo (como você disse) e tem um grande bloco de dados na memória, para obter a primeira linha com eficiência, faça uma divisão () no caractere de nova linha, uma vez somente e pegue o primeiro elemento da lista resultante.
Observe que isso não inclui o \n
caractere no final da linha, mas suponho que você não o queira de qualquer maneira (e um arquivo de linha única pode nem ter um). Observe também que, embora seja bastante curto e rápido, ele faz uma cópia dos dados; portanto, para um blob de memória realmente grande, você pode não considerá-lo "eficiente". Como sempre, depende ...
.read()
deveria ser chamado primeiro.
f1 = open("input1.txt", "r")
print(f1.readline())