¿Cómo obtendría solo la primera línea de un archivo como una cadena con Python?
¿Cómo obtendría solo la primera línea de un archivo como una cadena con Python?
Respuestas:
Use el .readline()
método ( documentos de Python 2 , documentos de Python 3 ):
with open('myfile.txt') as f:
first_line = f.readline()
Algunas notas:
f.readline()
contendrá una nueva línea final. Es posible que desee utilizar f.readline().strip()
en su lugar para eliminar la nueva línea.with
declaración cierra automáticamente el archivo nuevamente cuando finaliza el bloque.with
declaración solo funciona en Python 2.5 y versiones posteriores, y en Python 2.5 necesita usarfrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
es mejor.
fline=open("myfile").readline().rstrip()
rstrip()
elimina el carácter de nueva línea.
Esto debería hacerlo:
f = open('myfile.txt')
first = f.readline()
Para volver al comienzo de un archivo abierto y luego devolver la primera línea, haga lo siguiente:
my_file.seek(0)
first_line = my_file.readline()
Muchas otras respuestas aquí, pero para responder con precisión la pregunta que hizo (antes de que @MarkAmery fuera y editara la pregunta original y cambiara el 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]
En otras palabras, si ya has leído el archivo (como dijiste) y tienes un gran bloque de datos en la memoria, para obtener la primera línea de manera eficiente, haz una división () en el carácter de nueva línea, una vez solo, y tome el primer elemento de la lista resultante.
Tenga en cuenta que esto no incluye el \n
carácter al final de la línea, pero supongo que de todos modos no lo quiere (y un archivo de una sola línea puede que ni siquiera tenga uno). También tenga en cuenta que aunque es bastante corto y rápido, hace una copia de los datos, por lo que para una gran cantidad de memoria no puede considerarlo "eficiente". Como siempre, depende ...
.read()
debe llamarse primero.
f1 = open("input1.txt", "r")
print(f1.readline())