Foros del Web » Programando para Internet » Python »

[Aporte - Python] Código para leer todas las líneas de un archivo y mostrar X línea

Estas en el tema de [Aporte - Python] Código para leer todas las líneas de un archivo y mostrar X línea en el foro de Python en Foros del Web. Hola compañeros!! Voy a compartir el método que yo utilizo para leer todas las líneas de un archivo de texto y también para mostrar una ...
  #1 (permalink)  
Antiguo 24/04/2014, 02:59
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo [Aporte - Python] Código para leer todas las líneas de un archivo y mostrar X línea

Hola compañeros!!
Voy a compartir el método que yo utilizo para leer todas las líneas de un archivo de texto y también para mostrar una X línea, estas dos acciones se hacen sin utilizar ningún bucle (por lo menos no existe el bucle en el código fuente del programa).

Quiero comentar que aporto esto porque he leído en varios foros que muchas personas quieren leer una o varias líneas de un archivo de texto o que desean saber el total de líneas de un archivo, pero no quieren (por alguna razón tonta) usar un bucle.

Yo siempre recomendaré el bucle, aunque este código que les pasaré es practicamente lo mismo que usar un bucle.
Soy novato todavía en Python, pero me las he ingeniado para poder hacer este simple método.

Me gustan los foros porque puedo apreciar a muchas personas que dedican horas de su vida en compartir códigos, respuestas, explicaciones y ayuda, eso me alegra y me anima a seguir.

Bueno compañeros el código es este:

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Creación e idea por Príncipe_Azul
  4.  
  5. Archivo_Palabras = open("Palabras.txt", "r")
  6. Palabras1 = Archivo_Palabras.read()
  7. Archivo_Palabras.close()
  8. Palabras = Palabras1.splitlines()
  9. print Palabras[0] # Linea 1 Devuelve hola1
  10. print Palabras[9] # Linea 10 Devuelve hola10
  11. print Palabras[17] # Linea 18 Devuelve hola18
  12. print
  13. print (u"El archivo tiene %d líneas" % len(Palabras)) # Total de lineas
  14. raw_input()


Y el contenido del archivo Palabras.txt es este:

hola1
hola2
hola3
hola4
hola5
hola6
hola7
hola8
hola9
hola10
hola11
hola12
hola13
hola14
hola15
hola16
hola17
hola18
hola19
hola20


algo tonto el contenido, pero bueno, es solamente para que puedan comprobar que mi método funciona perfectamente, es lo mismo que usar for, yo la verdad, uso for o while, pero he probado de varias formas este código, osea con diferentes contenidos en el interior del archivo Palabras.txt y siempre funcionó perfectamente!!

La verdad para saber la cantidad de líneas de un archivo sin usar bucles, está bárbaro, muy bueno!! es mi opinión.

Bueno amigos!! Espero que les sirva y espero comentarios!! : )

Gracias a todos y que tengan buen día!!
  #2 (permalink)  
Antiguo 24/04/2014, 04:11
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 2 meses
Puntos: 18
Respuesta: [Aporte - Python] Código para leer todas las líneas de un archivo y mostra

Aconsejan usar 'with' para leer archivos, se encarga de cerrar el archivo automaticamente pase lo que pase.

Código Python:
Ver original
  1. with open("Palabras.txt", "r") as archivo_palabras:
  2.     contenido = archivo_palabras.read()

[URL="http://effbot.org/zone/python-with-statement.htm"]http://effbot.org/zone/python-with-statement.htm[/URL]

Saludos.
  #3 (permalink)  
Antiguo 24/04/2014, 07:42
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: [Aporte - Python] Código para leer todas las líneas de un archivo y mostra

Lo haria asi:


Código Python:
Ver original
  1. with open("palabras.txt", "r") as f:
  2.     list_lines = f.readlines()
  3.    
  4.     # puede arrojar excepcion IndexError
  5.     print(list_lines[60])
  6.  
  7.     # itero si quiero, etc
  8.     for line in list_lines:
  9.         print(line)
__________________
Salu2!

Última edición por Italico76; 24/04/2014 a las 08:41
  #4 (permalink)  
Antiguo 24/04/2014, 13:26
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Aporte - Python] Código para leer todas las líneas de un archivo y mostra

Pero ahí estás usando un bucle y la idea es no usar bucle
  #5 (permalink)  
Antiguo 24/04/2014, 13:33
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: [Aporte - Python] Código para leer todas las líneas de un archivo y mostra

Cita:
Iniciado por Principe_Azul Ver Mensaje
Pero ahí estás usando un bucle y la idea es no usar bucle
Donde ves el bucle ?

Código Python:
Ver original
  1. with open("palabras.txt", "r") as f:
  2.     list_lines = f.readlines()
  3.    
  4.     print(list_lines[5])

En la ultima parte hacia otra cosa (opcional) pero lo vos hicistes antes se reduce a la primera parte. De todas formas hay un bucle implicito en read() y readlines()

La idea era mostrarte que no es necesario usar read() combinado con splitlines() ya que para eso existe readlines() nativamente

Por otro lado, sino quieres consumirte toda la memoria leyendo un archivo grande no debe hacerse como estamos haciendo sino ir sacando los datos y procesandolos (en vez de recorrer todo el archivo con read() o readlines() y dejarlo cargado completito en una lista)
__________________
Salu2!
  #6 (permalink)  
Antiguo 24/04/2014, 23:45
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Aporte - Python] Código para leer todas las líneas de un archivo y mostra

Aquí mismo:

Código Python:
Ver original
  1. for line in list_lines:
  2.         print(line)

pero es obvio que si o si para leer todas las líneas vamos a necesitar utilizar un bucle.
Nota: yo siempre voy a preferir los bucles, excepto que lea tan sólo 1 sola línea, pero si tendría que leer todo el archivo línea por línea, entónces utilizaría el bucle for

Ese código de aporte que dejé es porque muchos usuarios lo han pedido, pero se lo puede mejorar o hacerlo como a uno más le guste o sepa.
Yo para leer todas las líneas podría haber usado filter y pienso que con eso ya podría haber leído todas las líneas!!

Igual sigan aportando mejoras, eso está muy bien!!
Gracias.

Etiquetas: gui, ip, programa, todas, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:45.