Diagnosticando problemas con los streams: continuación
Si eres un programador muy cuidadoso, puedes sentir la necesidad de usar una secuencia de sentencias similar a la que se presenta a continuación:
import errno
try:
s = open("c:/users/user/Desktop/file.txt", "rt")
# el procesamiento va aquí
s.close()
except Exception as exc:
if exc.errno == errno.ENOENT:
print("El archivo no existe.")
elif exc.errno == errno.EMFILE:
print("Has abierto demasiados archivos.")
else:
printf("El número de error es:", exc.errno)
Afortunadamente, existe una función que puede simplificar el código de manejo de errores. Su nombre es strerror()
, y proviene del módulo os
y espera solo un argumento: un número de error.
Su función es simple: proporciona un número de error y una cadena que describe el significado del error.
Nota: Si pasas un código de error inexistente (un número que no está vinculado a ningún error real), la función lanzará una excepción ValueError.
Ahora podemos simplificar nuestro código de la siguiente manera:
from os import strerror
try:
s = open("c:/users/user/Desktop/file.txt", "rt")
# el procesamiento va aquí
s.close()
except Exception as exc:
print("El archivo no se pudo abrir:", strerror(exc.errno));
Bueno. Ahora es el momento de tratar con archivos de texto y familiarizarse con algunas técnicas básicas que puedes utilizar para procesarlos.