Subsecciones


2. Utilización del intérprete Python


2.1 Llamar al intérprete

En Unix, el intérprete de Python se suele instalar como /usr/local/bin/python en aquellas máquinas donde esté disponible. En Windows, se instala en el directorio Archivos de programa. Poner este directorio en el path hace posible arrancarlo tecleando en el intérprete de órdenes la orden:

python

Como la elección del directorio donde reside el intérprete es una opción de instalación, es posible que se halle en otros lugares. Consulta con tu guru de Python local o tu administrador de sistemas (por ejemplo, /usr/local/python es una alternativa frecuente).

Teclear un carácter EOF o fin de fichero (Control-D en Unix, Control-Z en DOS o Windows) en el intérprete causa la salida del intérprete con un estado cero. Si eso no funciona, se puede salir del intérprete tecleando las siguientes órdenes: "import sys; sys.exit()".

Las opciones de edición de la línea de órdenes no son muy destacables. En Unix, es posible que quien instalara el intérprete en tu sistema incluyera soporte para la biblioteca de GNU `readline', que permite edición de línea más elaborada y recuperación de órdenes anteriores. El modo más rápido de ver sin hay soporte de edición de líneas es teclear Control-P en cuanto aparece el intérprete. Si pita, la edición de líneas está disponible (en el Apéndice hay una introducción a las teclas de edición). Si no sale nada o sale P, no está disponible la edición de líneas y sólo se puede utilizar la tecla de borrado para borrar el último carácter tecleado.

El intérprete funciona como el intérprete de órdenes de Unix: cuando se le llama con la entrada estándar conectada a un dispositivo tty, lee y ejecuta las órdenes interactivamente; cuando se le da un nombre de fichero como argumento o se le da un fichero como entrada estándar, lee y ejecuta un guion desde ese fichero.

Un tercer modo de arrancar el intérprete es "python -c orden [argumento] ...", que ejecuta las sentencias de orden, de forma análoga a la opción -c de la línea de órdenes. Como las sentencias de Python suelen contener espacios u otros caracteres que la línea de órdenes considera especiales, lo mejor es encerrar orden entre dobles comillas por completo.

Observa que hay una diferencia entre "python fichero" y "python <fichero". En el caso de la redirección, las solicitudes de entrada del programa, tales como llamadas a input() y raw_input(), se satisfacen desde fichero. Como este fichero ya se ha leído hasta el final antes de empezar la ejecución del programa, el programa se encuentra un EOF (fin de fichero) inmediatamente. En el caso del nombre de fichero como argumento, las solicitudes de entrada son satisfechas desde lo que esté conectado a la entrada estándar (esto suele ser lo deseado).

Cuando se utiliza un fichero de guion, a veces es útil ejecutar el guion y entrar en modo interactivo inmediatamente después. Esto se consigue pasando -i como argumento, antes del nombre del guion (esto no funciona si el guion se lee desde la entrada estándar, por la misma razón indicada en el párrafo anterior).


2.1.1 Traspaso de argumentos

El intérprete pasa el nombre del guion y los argumentos, si los conoce, mediante la variable sys.argv, que es una lista de cadenas. Su longitud es al menos uno (cuando no hay guion y no hay argumentos, sys.argv[0] es una cadena vacía). Cuando el guion es '-' (es decir, la entrada estándar), sys.argv[0] vale '-'. Cuando se utiliza -c orden, sys.argv[0] vale '-c'. Las opciones tras -c orden no las utiliza el intérprete Python, sino que quedan en sys.argv para uso de la orden.


2.1.2 Modo interactivo

Cuando se leen órdenes desde una tty, se dice que el intérprete está en modo interactivo. En este modo, espera a la siguiente orden con el indicador principal, que suele se tres signos `mayor' (">>>" ). Para las líneas adicionales, se utiliza el indicador secundario, por omisión tres puntos ("... ").

El intérprete muestra un mensaje de bienvenida con su número de versión e información de derechos de copia, antes de mostrar el primer indicador, por ejemplo:

python
Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06)  [GCC 2.8.1] on sunos5
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>>

Las líneas de continuación son necesarias al introducir construcciones milti-línea. Por ejemplo, echa un visatazo a esta sentencia if:

>>> la_tierra_es_plana = 1
>>> if la_tierra_es_plana:
...     print "¡Cuidado, que te caes!"
...
¡Cuidado, que te caes!


2.2 El intérprete y su entorno


2.2.1 Gestión de errores

Cuando ocurre un error, el intérprete muestra un mensaje de error y una traza de la pila. En el modo interactivo, después vuelve al indicador principal. Si la entrada venía de un fichero, sale con un resultado distinto de cero tras mostrar la traza de la pila (las excepciones gestionadas con una sentencia except en una construcción try no son errores en este contexto). Existen errores no capturables que hacen que se cierre el intérprete con un resultado distinto de cero. Por ejemplo, esto ocurre con las inconsistencias internas y, en algunos casos, al quedarse sin memoria. Todos los mensajes de error se escriben en la salida de error estándar (la pantalla, si no se redirige a un fichero u otra cosa). La salida del programa se escribe en la salida estándar (que también es la pantalla, salvo en el caso mencionado antes).

Si se teclea el carácter de interrupción (suele ser Control-C o DEL) en el indicador principal o secundario se cancela la entrada y se hace volver el indicador primario2.1. Si se intenta interrumpir mientras se ejecuta una orden, se activa la excepción KeyboardInterrupt, que puede ser gestionada por una construcción try.


2.2.2 Guiones Python ejecutables

En sistemas Unix tipo BSD, los guiones Python se pueden hacer ejecutables directamente, como guiones de línea de órdenes, poniendo la línea

#! /usr/bin/env python

(suponiendo que el intérprete está en el $PATH del usuario) al principio del guion y dándole al guion permisos de ejecución. "#!" deben ser los primeros caracteres del fichero. Observa que la almohadilla, "#", se utiliza para iniciar un comentario en Python.


2.2.3 El fichero de arranque interactivo

Al usar Python interactivamente, suele ser útil que se ejecuten algunas órdenes estándar cada vez que se arranca el intérprete. Se puede lograr esto poniendo en la variable de entorno $PYTHONSTARTUP el nombre del fichero que contiene las órdenes de arranque. Esto se parece a la característica .profile de la línea de órdenes de Unix o al fichero autoexec.bat de MS-DOS.

Este fichero sólo se lee en sesiones interactivas, no cuando Python lee órdenes de un guion, ni cuando se utiliza /dev/tty como fuente explícita de órdenes (lo que hace que se comporte casi como una sesión interactiva). Estas órdenes se ejecutan en el mismo espacio nominal que las órdenes, para que los objetos definidos o módulos importados se puedan usar sin necesidad de cualificarlos en la sesión interactiva. También puede cambiar los indicadores principal y secundario (sys.ps1 y sys.ps2) usando este fichero.

Si deseas leer un archivo de arranque adicional del directorio actual puedes programarlo así en el fichero de arranque global, es decir "if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')". Si deseas utilizar el fichero de arranque en un guion, debes hacerlo explícitamente dentro del guion:

import os
nombreFich = os.environ.get('PYTHONSTARTUP')
if nombreFich and os.path.isfile(nombreFich):
    execfile(nombreFich)



Notas al pie

... primario2.1
Puede haber problemas con el paquete GNU readline que impidan esto.

Ver Sobre este documento... para obtener información sobre sugerencias.