Introducción a los Flujos de Entrada y Salida de datos en Python

Python permite obtener y mostrar información de formas diferentes. Para ello hace uso de los flujos de entrada y salida de datos. En este breve tutorial explicaré su funcionamiento.

Lectura de datos

Sabemos que Python nos permite utilizar ficheros para guardar información y procesar información, pero en ocasiones es necesario interaccionar con el usuario para preguntarle cierta información necesaria que que no pudo ser guardada en estos ficheros.

Para realizar este proceso Python dispone de la función input(), que nos permite solicitar al usuario información y poder utilizarla en nuestros scripts.

La función input() siempre nos devuelve un tipo de dato string, por lo que sí necesitamos que nos devuelva otro tipo de dato, necesitamos convertirlo. En el siguiente ejemplo le vamos a pedir al usuario un valor entero.

Podemos modificar el script, para que este siga ejecutándose una y otra vez y de esta manera permitir al usuario seguir interaccionando con el script. El usuario podrá parar la ejecución del script cuando desee mientras se cumpla la condición establecida.

Los Flujos estándar

Cuando sabemos como escribir en ficheros y solicitar información al usuario, la pregunta que nos podemos hacer es, ¿Cómo hace Python para conectar pantalla y teclado?. La respuesta es, a través de los flujos de entrada y salida de datos. Estos flujos son los mecanismos que nos permiten realizar operaciones de entrada y salida en nuestros programas.

Teclado (entrada|input) → ProgramaPantalla (salida|output)

La mayoría de los Sistemas Operativos ofrecen tres flujos de entrada y salida de datos por defecto, cada uno de ellos para un propósito específico.

  • Entrada de datos estándar (stdin), es un canal de comunicación entre el programa y la entrada de datos (normalmente en formato texto desde un teclado).
  • Salida de datos estándar (stdout), es un canal de comunicación entre el programa y la salida de datos (normalmente en formato texto a través de una pantalla).
  • Salida de Errores (stderr), es un canal de comunicación para mostrar errores y mensajes de diagnóstico de un programa (normalmente en formato texto a través de la pantalla).

Cuando usamos la función input() estamos usando el canal de comunicación de entrada de datos STDIN. La función print() es un claro ejemplo de un flujo de datos STDOUT. Si ejecutas un script escrito en Python y recibes un error, ese error probablemente es impreso usando el canal de comunicación STDERR.

Variables de entorno

Cuando ejecutamos una aplicación desde un terminal en un Sistema Operativo Linux, ya sea desde una máquina local o remota, la aplicación que se encarga de leer y ejecutar todos los comandos se llama Shell.

El Shell es una interfaz de línea de comandos, que nos permite interactuar con el Sistema Operativo. El Shell más usado actualmente en Linux es Bash (GNU Bash) y otros no menos importantes son zsh (Z Shell) o fish (Friendly interactive shell).

Los programas escritos en Python son ejecutados en entorno de línea de comandos Shell y todas las variables establecidas en ese entorno podrán ser utilizadas en nuestros scripts. Saber cómo cambiar estas variables, nos será útil para alterar el comportamiento de los programas.

La variable PATH es una variable de entorno muy importante. Podemos mostrar su contenido usando el comando echo (comando para imprimir texto en el Shell de Linux), seguido del nombre de la variable precedido del símbolo dólar.

El Shell usa la variable de entorno PATH para saber dónde buscar los ficheros ejecutables y así poder llamarlos desde el directorio donde nos encontremos. El contenido de todas estas variables, podemos leerlos desde nuestros scripts escritos en Python. Para ello podemos usar la función environ() del módulo OS de Python. Veamos un ejemplo desde el intérprete de Python.

Si necesitamos definir una nueva variable de entorno desde línea de comandos, usamos el comando export.

Argumentos de línea de comandos

Otra forma de incluir o aportar información a nuestros programas, es a través de argumentos de línea de comandos. Estos argumentos o parámetros se los pasaremos al programa una vez sea inicializado.

En Python, estos parámetros son guardados por el módulo sys y podemos acceder a sus valores usando argv. El primer argumento que nos devuelve es el nombre del script.

Por último vamos a hablar del concepto exit status o también llamado código de retorno que aporta información entre el Shell y los programas que se ejecutan dentro de él. En todos los Sistemas Operativos Unix si obtenemos 0 (cero) como valor de retorno, sabremos que el proceso ha tenido éxito.

Por lo que este valor de retorno nos servirá para saber si nuestros programas se han ejecutado correctamente o usar esta misma información para volver a ejecutar el programa en caso de que este falle.

Para poder comprobar este valor usamos el signo de interrogación y para ver su contenido usaremos el signo del dólar seguido del signo de interrogación. Mejor verlo con un ejemplo  usando el comando wc que devuelve el número de líneas, palabras y caracteres de un fichero. Primero le pasaremos las variables a nuestro script y comprobaremos el valor de retorno.

Ahora veamos otro ejemplo cuando el programa es ejecutado y devuelve un código de error, debido a que el fichero no existe.

Ahora que sabemos cómo funcionan los valores de retorno en línea de comandos, ¿Cómo comprobamos estos valores usando Python?.  Veamos un ejemplo donde pasamos un nombre de fichero a nuestro programa, este lo crea sino existe o devuelve un error en caso contrario.

Ahora comprobemos cuál es el resultado en ambos casos.

 

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.