martes, 25 de octubre de 2011

Python: Leer líneas de un archivo de texto

Esta entrada es en respuesta a la pregunta hecha por Helen Muñoz en Yahoo! Respuestas:

¿Por Favor Ayuda con un programa en python?

Hay varias maneras de leer las líneas en un archivo de texto desde python, pero dejo una de las más aconsejadas, ya que permite manipularlas en cualquier momento
.


#!/usr/bin/env python 
# -*- coding: latin-1 -*-

# Las dos líneas anteriores son comentarios mágicos
# El primero para que usuarios de linux puedan ejecutar
# el script sin necesidad de buscar el compilador
# ya que esta línea se encarga de buscarlo por ellos
# y ejecuta el código con el interprete indicado.
# En unix se llama shebang, hashbang o sharpbang.

# El segundo comentario es para especificar el juego
# de caracteres que se va a utilizar en el código fuente.
# Permite utilizar tildes( acentos: áéíóú ) y la 'Ñ'
# para comentar y utilizarlas en variables de tipo
# cadena de caracteres (Strings)
# ======================================================


# Imprimo un saludo, hay que ser educado :D
# la u antes de la cadena me permite utilizar
# unicode para los caracteres y junto con el coding
# se imprimen los acentos, ñ's y demas símbolos que 
# no se verían normalmente.
print u"Hola, Helen como estás?"
print "========================"
print
#cuando se deja un print solo, este imprime una línea en blanco
print "1. Cargando el archivo menu1.txt"
print

# abro el archivo en modo de solo lectura y lo
# referencio por medio de la variable menuTxt
menuTxt = open( 'menu1.txt', 'r' );
lineas = menuTxt.readlines();

# De este modo se puede leer cada línea, y se pone una coma(,)
# después del print line, para que obvie el salto de línea
# que pone el print al final, prueba quitando la coma
numero = 0;
print u"2. Imprimiendo el menú en orden"
print "==============================="
for linea in lineas:
    numero += 1
    print numero,". ",linea,
print
print

numero = 0; # Restauramos numero a 0
numLin = len( lineas ) 
# contamos el número de elementos en la lista líneas

print u"3. Imprimiendo el menú al revés"    
print "================================"
while numLin > 0: # mientras que numLin sea mayor a 0, haga
    numero += 1 # súmele 1 a numero
    numLin -= 1 # réstele 1 a numLin, para ir en retroceso
    
    print numero,". ", lineas[numLin],
    # Gracias a numLin que se resta 1
    # por cada ciclo, se pueden leer en 
    # retroceso los elementos
    # en la lista lineas        
print

La única recomendación para que este código funcione, es que en el archivo menu1.txt, dar un salto de línea después de la última palabra en el archivo, en este caso arroz.

Exitos y espero que este código le sirva a muchas personas:

Tal vez también le interese:

Python: Como extraer datos de un archivo xls

1 comentario:

  1. Oye sabrias hacer un programa en python para un circuito de un auto controlado por voz?

    ResponderEliminar