¿Cómo obtendría solo la primera línea de un archivo como una cadena con Python?¿Leer solo la primera línea de un archivo?
Respuesta
Esto debe hacerlo:
f = open('myfile.txt')
first = f.readline()
infile = open('filename.txt', 'r')
firstLine = infile.readline()
No está cerrando el archivo. La [solución con 'con'] (http://stackoverflow.com/a/1904455/855050) es mejor. – becko
Utilice la .readline()
método (Python 2 docs, Python 3 docs):
with open('myfile.txt') as f:
first_line = f.readline()
Algunas notas:
- Como se señaló en los documentos , a menos que sea el único línea en el archivo, la cadena devuelta desde
f.readline()
contendrá una nueva línea final. Es posible que desee utilizarf.readline().strip()
en su lugar para eliminar la nueva línea. - La declaración
with
cierra automáticamente el archivo cuando termina el bloque. - La declaración
with
sólo funciona en Python 2.5 y posteriores, y en Python 2.5 es necesario utilizarfrom __future__ import with_statement
- En Python 3 que debe especificar la codificación de archivo para el archivo se abre. Read more...
En Python 3 si el archivo es ascii o utf8 no es necesario que especifique la codificación del archivo. Y si no lo es, debe especificar la codificación a codecs.open en Python 2 de todos modos. – Evpok
@Evpok * "En Python 3 si el archivo es ascii o utf8 no es necesario especificar la codificación del archivo" * - ¡si eso fuera estrictamente cierto!La realidad es un poco más desordenada; como se menciona en los documentos, la codificación predeterminada utilizada depende de la plataforma (y puede diferir incluso en la misma computadora dependiendo de cómo inicie Python; por ejemplo, he visto código que funcionaba en mi caparazón normal al asumir que UTF-8 explotaría más tarde) cuando se ejecuta a través de Apache con 'mod_wsgi'). –
fline=open("myfile").readline().rstrip()
Vine aquí buscando esto. Especialmente desde 'rstrip()' elimina el carácter de nueva línea. –
-1; esto no cierra el archivo, y devuelve un resultado incorrecto si la primera línea contiene cualquier espacio en blanco posterior además del carácter de nueva línea en sí. –
@MarkAmery: en realidad, debido a que el identificador de archivo no está asignado a una variable, se recolecta basura inmediatamente, lo que cierra el archivo. (Aunque, por supuesto, la solución aceptada que usa un administrador de contexto aún es mucho mejor). – acdr
Muchas otras respuestas aquí, pero para responder precisamente la pregunta que hizo (antes @MarkAmery fue y se editó la pregunta original y cambió 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 en otras palabras, si ya ha leído en el archivo (como dijo) y tiene un gran bloque de datos en la memoria, para obtener la primera línea de manera eficiente, haga una división() en el carácter de nueva línea, una sola vez , y toma el primer elemento de la lista resultante.
Tenga en cuenta que esto no incluye el carácter \n
al final de la línea, pero asumo que no lo desea de todos modos (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 puede que no la considere "eficiente". Como siempre, depende ...
Si se trata de un archivo grande, f.read() intentará cargar todo el archivo en la memoria, lo que no sería una buena idea. Una alternativa sería leer un carácter a la vez hasta encontrar una nueva línea o EOF – randomThought
En realidad, todas las otras respuestas son mejores alternativas que eso. Normalmente, la lectura de un archivo con readline() y sus amigos cargaría bloques enteros a la vez, tal vez 32K más o menos, y busca a través de eso para encontrar la siguiente nueva línea. Mucho más rápido y más eficiente. Mi respuesta solo sería útil si ya * está * cargando todo, en cuyo caso podemos suponer que está bien con todo en la memoria. –
No estoy convencido de haber cambiado el significado. No tiene sentido preguntar cómo "leer" la primera línea de un archivo después de "leer" todo el archivo. Como tal, es bastante obvio para mí que la intención del asker era * no * suponer que '.read()' debe llamarse primero. –
Para volver al principio de un archivo abierto, haga lo siguiente:
my_file.seek(0)
Solo para entender mejor, sería "my_file.seek (0) line = my_file.readline()" –
f1 = open("input1.txt", "r")
print(f1.readline())
Hay respuestas múltiples de más de cinco años que contienen * exactamente este enfoque *. No está haciendo nada más que crear ruido al agregar otro. –
- 1. Cómo leer solo la primera línea de un archivo
- 2. Leyendo la primera línea de un archivo en Ruby
- 3. Perl: cómo elimino la primera línea de un archivo sin leer ni copiar todo el archivo
- 4. ¿Sangrar solo la primera línea de texto de un párrafo?
- 5. Comandos de lote de Windows para leer la primera línea del archivo de texto
- 6. En Scala, ¿cómo leer un archivo CSV simple con un encabezado en su primera línea?
- 7. Salteando la primera línea al leer en un archivo en 1.9.3
- 8. En Scala, al leer un archivo, ¿cómo me saltaría la primera línea?
- 9. ¿Cómo puedo hacer cambios solo en la primera línea de un archivo?
- 10. linux ordenar solo por la primera letra de cada línea
- 11. Mostrar la primera línea de un párrafo
- 12. Rendimiento al leer un archivo línea por línea vs leer todo el archivo
- 13. Leer un archivo de texto línea por línea en Qt
- 14. Bash- ¿cómo leer la penúltima línea de un archivo?
- 15. Leer un archivo línea por línea en Prolog
- 16. ¿Cómo leer un archivo .gz línea por línea en C++?
- 17. PHP: Leer línea específica del archivo
- 18. phantomjs javascript leer un archivo local línea por línea
- 19. Leer/Analizar archivo de texto línea por línea en VBA
- 20. Leer un archivo línea por línea hacia atrás usando fseek
- 21. C# saltarse primera línea de un archivo de texto
- 22. C++ forma más rápida de leer solo la última línea de archivo de texto?
- 23. sed, reemplace la primera línea
- 24. C Eliminar la primera línea de un archivo de texto sin reescribir el archivo
- 25. Eliminar la primera línea de archivo si está vacía
- 26. ¿Imprimir solo la última línea de un archivo?
- 27. Cómo leer eficientemente solo la última línea del archivo de texto
- 28. extrayendo la primera línea del archivo usando el comando awk
- 29. comando unix para leer la línea de un archivo pasando el número de línea
- 30. Leer la última línea del archivo de texto
Si ya ha leído el archivo ("Después de la lectura en un archivo "), ¡ya has leído la primera línea! (Suponiendo que hay al menos una línea.) –
Tenga en cuenta que la pregunta * como está redactada ahora * tiene un significado diferente de lo que originalmente lo hizo. Algunas respuestas ahora parecen tontas ya que tuvieron en cuenta la parte "después de leer en un archivo" (que se ha eliminado). –