Module (82%)
Section (86%)

Procesamiento de archivos de texto: continuación

La lectura del contenido de un archivo de texto se puede realizar utilizando diferentes métodos; ninguno de ellos es mejor o peor que otro. Depende de ti cuál de ellos prefieres y te gusta.

Algunos de ellos serán a veces más prácticos y otros más problemáticos. Se flexible. No tengas miedo de cambiar tus preferencias.

El más básico de estos métodos es el que ofrece la función read(), la cual pudiste ver en acción en la lección anterior.

Si se aplica a un archivo de texto, la función es capaz de:

  • Leer un número determinado de caracteres (incluso solo uno) del archivo y devolverlos como una cadena.
  • Leer todo el contenido del archivo y devolverlo como una cadena.
  • Si no hay nada más que leer (el cabezal de lectura virtual llega al final del archivo), la función devuelve una cadena vacía.

Comenzaremos con la variante más simple y usaremos un archivo llamado text.txt. El archivo contiene lo siguiente:

Lo hermoso es mejor que lo feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado.

Ahora observa el código en el editor y analicémoslo.

La rutina es bastante simple:

  • Se usa el mecanismo try-except y se abre el archivo con el nombre (text.txt en este caso).
  • Intenta leer el primer caracter del archivo (ch = s.read(1)).
  • Si tienes éxito (esto se demuestra por el resultado positivo de la condición while), se muestra el caracter (nota el argumento end=,¡es importante! ¡No querrás saltar a una nueva línea después de cada caracter!).
  • Se actualiza el contador (cnt).
  • Intenta leer el siguiente carácter y el proceso se repite.


Code

from os import strerror

try:
cnt = 0
s = open('text.txt', "rt")
ch = s.read(1)
while ch != '':
print(ch, end='')
cnt += 1
ch = s.read(1)
s.close()
print("\n\nCaracteres en el archivo: ", cnt)
except IOError as e:
print("Se produjo un error de E/S: ", strerr(e.errno))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×