Categoria: Programacion Tema: Python Titulo: Entrada/salida y ficheros en python
Fecha del Tema: 2012-09-23 23:08:20Entrada/Salida Y Ficheros Nuestros programas serÃan de muy poca utilidad si no fueran capaces de interaccionar con el usuario. En capÃtulos anteriores vimos, de pasada, el uso de la palabra clave print para mostrar mensajes en pantalla. En esta lección, además de describir más detalladamente del uso de print para mostrar mensajes al usuario, aprenderemos a utilizar las funciones input y raw_input para pedir información, asà como los argumentos de lÃnea de comandos y, por último, la entrada/salida de ficheros. Entrada estándar La forma más sencilla de obtener información por parte del usuario es mediante la función raw_input. Esta función toma como parámetro una cadena a usar como prompt (es decir, como texto a mostrar al usuario pidiendo la entrada) y devuelve una cadena con los caracteres introducidos por el usuario hasta que pulsó la tecla Enter. Veamos un pequeño ejemplo: nombre = raw_input(â??Como te llamas? â??) print â??Encantado, â?? + nombre Si necesitáramos un entero como entrada en lugar de una cadena, por ejemplo, podrÃamos utilizar la función int para convertir la cadena a entero, aunque serÃa conveniente tener en cuenta que puede lanzarse una excepción si lo que introduce el usuario no es un número. <? try: edad = raw_input(â??Cuantos anyos tienes? â??) dias = int(edad) * 365 print â??Has vivido â?? + str(dias) + â?? dias" except ValueError: print â??Eso no es un numero" ?> La función input es un poco más complicada. Lo que hace esta función es utilizar raw_input para leer una cadena de la entrada estándar, y después pasa a evaluarla como si de código Python se tratara; por lo tanto input deberÃa tratarse con sumo cuidado. Parámetros de lÃnea de comando Además del uso de input y raw_input el programador Python cuenta con otros métodos para obtener datos del usuario. Uno de ellos es el uso de parámetros a la hora de llamar al programa en la lÃnea de comandos. Por ejemplo: python editor.py hola.txt En este caso hola.txt serÃa el parámetro, al que se puede acceder a través de la lista sys.argv, aunque, como es de suponer, antes de poder utilizar dicha variable debemos importar el módulo sys. sys.argv[0] contiene siempre el nombre del programa tal como lo ha ejecutado el usuario, sys.argv[1], si existe, serÃa el primer parámetro; sys.argv[2] el segundo, y asà sucesivamente. <? import sys if(len(sys.argv) > 1): print â??Abriendo â?? + sys.argv[1] else: print â??Debes indicar el nombre del archivo" ?> Existen módulos, como optparse, que facilitan el trabajo con los argumentos de la lÃnea de comandos, pero explicar su uso queda fuera del objetivo de este capÃtulo. Salida estándar La forma más sencilla de mostrar algo en la salida estándar es mediante el uso de la sentencia print, como hemos visto multitud de veces en ejemplos anteriores. En su forma más básica a la palabra clave print le sigue una cadena, que se mostrará en la salida estándar al ejecutarse el estamento. <? >>> print â??Hola mundo" Hola mundo ?> Archivos Los ficheros en Python son objetos de tipo file creados mediante la función open (abrir). Esta función toma como parámetros una cadena con la ruta al fichero a abrir, que puede ser relativa o absoluta; una cadena opcional indicando el modo de acceso (si no se especifica se accede en modo lectura) y, por último, un entero opcional para especificar un tamaño de buffer distinto del utilizado por defecto. El modo de acceso puede ser cualquier combinación lógica de los siguientes modos: â?¢ â??râ??: read, lectura. Abre el archivo en modo lectura. El archivo tiene que existir previamente, en caso contrario se lanzará una excepción de tipo IOError. â?¢ â??wâ??: write, escritura. Abre el archivo en modo escritura. Si el archivo no existe se crea. Si existe, sobreescribe el contenido. â?¢ â??aâ??: append, añadir. Abre el archivo en modo escritura. Se diferencia del modo â??wâ?? en que en este caso no se sobreescribe el contenido del archivo, sino que se comienza a escribir al final del archivo. â?¢ â??bâ??: binary, binario. â?¢ â??+â??: permite lectura y escritura simultáneas. â?¢ â??Uâ??: universal newline, saltos de lÃnea universales. Permite trabajar con archivos que tengan un formato para los saltos de lÃnea que no coincide con el de la plataforma actual (en Windows se utiliza el caracter CR LF, en Unix LF y en Mac OS CR). f = open(â??archivo.txt", â??w")
Entrada/Salida Y Ficheros Nuestros programas serÃan de muy poca utilidad si no fueran capaces de interaccionar con el usuario. En capÃtulos anteriores vimos, de pasada, el uso de la palabra clave print para mostrar mensajes en pantalla. En esta lección, además de describir más detalladamente del uso de print para mostrar mensajes al usuario, aprenderemos a utilizar las funciones input y raw_input para pedir información, asà como los argumentos de lÃnea de comandos y, por último, la entrada/salida de ficheros. Entrada estándar La forma más sencilla de obtener información por parte del usuario es mediante la función raw_input. Esta función toma como parámetro una cadena a usar como prompt (es decir, como texto a mostrar al usuario pidiendo la entrada) y devuelve una cadena con los caracteres introducidos por el usuario hasta que pulsó la tecla Enter. Veamos un pequeño ejemplo: nombre = raw_input(â??Como te llamas? â??) print â??Encantado, â?? + nombre Si necesitáramos un entero como entrada en lugar de una cadena, por ejemplo, podrÃamos utilizar la función int para convertir la cadena a entero, aunque serÃa conveniente tener en cuenta que puede lanzarse una excepción si lo que introduce el usuario no es un número. <? try: edad = raw_input(â??Cuantos anyos tienes? â??) dias = int(edad) * 365 print â??Has vivido â?? + str(dias) + â?? dias" except ValueError: print â??Eso no es un numero" ?> La función input es un poco más complicada. Lo que hace esta función es utilizar raw_input para leer una cadena de la entrada estándar, y después pasa a evaluarla como si de código Python se tratara; por lo tanto input deberÃa tratarse con sumo cuidado. Parámetros de lÃnea de comando Además del uso de input y raw_input el programador Python cuenta con otros métodos para obtener datos del usuario. Uno de ellos es el uso de parámetros a la hora de llamar al programa en la lÃnea de comandos. Por ejemplo: python editor.py hola.txt En este caso hola.txt serÃa el parámetro, al que se puede acceder a través de la lista sys.argv, aunque, como es de suponer, antes de poder utilizar dicha variable debemos importar el módulo sys. sys.argv[0] contiene siempre el nombre del programa tal como lo ha ejecutado el usuario, sys.argv[1], si existe, serÃa el primer parámetro; sys.argv[2] el segundo, y asà sucesivamente. <? import sys if(len(sys.argv) > 1): print â??Abriendo â?? + sys.argv[1] else: print â??Debes indicar el nombre del archivo" ?> Existen módulos, como optparse, que facilitan el trabajo con los argumentos de la lÃnea de comandos, pero explicar su uso queda fuera del objetivo de este capÃtulo. Salida estándar La forma más sencilla de mostrar algo en la salida estándar es mediante el uso de la sentencia print, como hemos visto multitud de veces en ejemplos anteriores. En su forma más básica a la palabra clave print le sigue una cadena, que se mostrará en la salida estándar al ejecutarse el estamento. <? >>> print â??Hola mundo" Hola mundo ?> Archivos Los ficheros en Python son objetos de tipo file creados mediante la función open (abrir). Esta función toma como parámetros una cadena con la ruta al fichero a abrir, que puede ser relativa o absoluta; una cadena opcional indicando el modo de acceso (si no se especifica se accede en modo lectura) y, por último, un entero opcional para especificar un tamaño de buffer distinto del utilizado por defecto. El modo de acceso puede ser cualquier combinación lógica de los siguientes modos: â?¢ â??râ??: read, lectura. Abre el archivo en modo lectura. El archivo tiene que existir previamente, en caso contrario se lanzará una excepción de tipo IOError. â?¢ â??wâ??: write, escritura. Abre el archivo en modo escritura. Si el archivo no existe se crea. Si existe, sobreescribe el contenido. â?¢ â??aâ??: append, añadir. Abre el archivo en modo escritura. Se diferencia del modo â??wâ?? en que en este caso no se sobreescribe el contenido del archivo, sino que se comienza a escribir al final del archivo. â?¢ â??bâ??: binary, binario. â?¢ â??+â??: permite lectura y escritura simultáneas. â?¢ â??Uâ??: universal newline, saltos de lÃnea universales. Permite trabajar con archivos que tengan un formato para los saltos de lÃnea que no coincide con el de la plataforma actual (en Windows se utiliza el caracter CR LF, en Unix LF y en Mac OS CR). f = open(â??archivo.txt", â??w")