Come otterresti solo la prima riga di un file come stringa con Python?
Come otterresti solo la prima riga di un file come stringa con Python?
Risposte:
Usa il .readline()
metodo ( documenti Python 2 , documenti Python 3 ):
with open('myfile.txt') as f:
first_line = f.readline()
Alcune note:
f.readline()
conterrà una nuova riga finale. Potresti voler utilizzare f.readline().strip()
invece per rimuovere la nuova riga.with
istruzione chiude di nuovo automaticamente il file al termine del blocco.with
istruzione funziona solo in Python 2.5 e versioni successive e in Python 2.5 è necessario utilizzarefrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
è migliore.
fline=open("myfile").readline().rstrip()
rstrip()
rimuove il carattere di nuova riga.
Questo dovrebbe farlo:
f = open('myfile.txt')
first = f.readline()
Per tornare all'inizio di un file aperto e quindi restituire la prima riga, procedere come segue:
my_file.seek(0)
first_line = my_file.readline()
first_line = next(open(filename))
Molte altre risposte qui, ma per rispondere esattamente alla domanda che hai posto (prima che @MarkAmery andasse a modificare la domanda originale e ne cambiasse il significato):
>>> 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]
In altre parole, se hai già letto nel file (come hai detto) e hai un grosso blocco di dati in memoria, quindi per ottenere la prima riga da esso in modo efficiente, fai una divisione () sul carattere di nuova riga, una volta solo e prendi il primo elemento dall'elenco risultante.
Nota che questo non include il \n
carattere alla fine della riga, ma suppongo che tu non lo voglia comunque (e un file a riga singola potrebbe non averne nemmeno uno). Si noti inoltre che sebbene sia piuttosto breve e veloce, crea una copia dei dati, quindi per un blocco di memoria molto grande non si può considerare "efficiente". Come sempre, dipende ...
.read()
debba essere chiamato per primo.
f1 = open("input1.txt", "r")
print(f1.readline())