3.1 sys -- Parámetros y funciones específicas del sistema

Este módulo propoprciona aceso a variables utilizadas o mantenidas por el intérprete y a funciones que interactúan estrechamente con el intérprete. Siempre está disponible.

argv
La lista de argumentos de la línea de órdenes pasada a un guion Python. argv[0] es el nombre del guion (depende del sistema operativo si es una ruta completa o no). Si se ejecutó la orden usando la opción de línea de órdenes -c, argv[0] valdrá la cadena '-c'. Si no se pasó un nombre de guion al intérprete de Python, argv tiene longitud cero.

byteorder
Un indicador del orden de byte nativo. Tendrá el valor 'big' en plataformas ``big-endian'' (el byte más significativo primero) y 'little' en plataformas ``little-endian'' (el byte menos significativo primero). Nuevo en la versión 2.0.

builtin_module_names
Una tupla de cadenas con los nombres de todos los módulos compilados en el intérprete Python concreto. Esta información no está disponible de ningún otro modo; modules.keys() solo devuelve los módulos importados.

copyright
Una cadena que contiene la información de copyright (derechos de copia) del intéprete de Python.

dllhandle
Un entero que especifica el asa (handle) de la DLL de Python. Disponibilidad: Windows.

exc_info ()
Esta función devuelve una tupla de tres valores que proporcionan información sobre la excepción cuya gestión está en curso. La información devuelta es específica del hilo de ejecución en curso y del marco de pila en curso. Si el marco de pila en curso no está gestionando una excepción, la información se toma del marco de pila superior (el llamante) y así sucesivamente, hasta que se encuentre un marco que esté gestionando una excepción. En este contexto, ``gestionando una excepción'' se define como ``ejecutando o habiendo ejecutado una cláusula except''. Para cualquier marco de pila, sólo es accesible la información sobre la excepción gestionada más recientemente.

Si no se está gestionando ninguna excepción en ningún lugar de la pila, se devuelve una tupla con tres valores None. En caso contrario, los valores devueltos son (tipo, valor, traza). Su significado es el siguiente: tipo recibe el tipo de la excepción que se está gestionando (una cadena u objeto clase); valor recibe el parámetro de la excepción (su valor asociado o el segundo argumento de raise, que siempre es una instancia de clase si el tipo de la excepción es un objeto de clase); traza recibe un objeto traza (consultar el Manual de referencia) que encapsula la pila de llamadas en el punto en que ocurrió la excepción originalmente.

Advertencia: asignar el valor de retorno de traceback a una variable local de una función que está gentionando una excepción provocará una referencia cíclica. Esto impedirá que cualquier cosa referenciada por una variable local de la misma función o por la retraza sea recolectado como basura. Como la mayoría de las funciones no necesitan acceso a la retraza, la mejor solución es utilizar algo del estilo de tipo, valor = sys.exc_info()[:2] para extraer sólo el tipo y el valor de la excepción. Si sí que se necesita la retraza, hay que asegurarse de borrar la variable local que le hace referencia tras su uso (para asegurarse, utilizar una sentencia try ... finally) o llamar a exc_info() en una función que no gestione ella misma una excepción.

exc_type
exc_value
exc_traceback
Obsoleto a partir de la versión 1.5. Usar exc_info() en su lugar.

Como son variables globales, no son específicas del hilo de ejecución actual, por lo que su uso no es seguro en un programa multihilo. Si no se está gestionando ninguna excepción, exc_type vale None y las otras dos no están definidas.

exec_prefix
Una cadena que indica el prefijo del directorio específico de la instalación donde se instalan los ficheros Python dependientes de plataforma. Por omisión, vale '/usr/local'. Se puede asignar este valor en tiempo de compilación con el argumento --exec-prefix del guion configure. Específicamente, todos los ficheros de configuración (por ejemplo, el fichero de cabecera config.h) se instalan en exec_prefix + '/lib/pythonversion/config' y los módulos de biblioteca compartidos en exec_prefix + '/lib/pythonversion/lib-dynload', donde version vale version[:3].

executable
Una cadena que indica el nombre del binario ejecutable del intérprete de Python, en los sistemas en que esto tenga sentido.

exit ([arg])
Salir de Python. Se implementa lanzando una excepción SystemExit, por lo que se respetan las acciones de limpieza especificadas por cláusulas finally de las sentencias try y es posible interceptar el intento de salir en un nivel más externo. El argumento opcional arg puede ser un entero que indique el estado de la salida (por omisión, cero) u otro tipo de objeto. Si es entero, el cero se considera ``final con éxito'' y cualquier valor no cero se considera ``terminación anómala'' en intérpretes de órdenes y similares. La mayoría de los sistemas requieren que el valor está en el rango 0-127 y se comprotan de manera indeterminada en caso contrario. Algunos sistemas tienen una convención para asignar significados específicos a códigos de salida concretos, pero el tema no está muy desarrollado. Los programas de Unix suelen usar 2 para errores de sintaxis de la línea de órdenes y 1 para cualquier otro error. SI se pasa cualquier otro tipo de objeto, None equivale a pasar cero y cualquier otro objeto se presenta a sys.stderr y causa un código de salida 1. En particular, sys.exit("mensaje de error") es un sistema rápido de salir de un programa cuando hay un error.

exitfunc
Este valor no está definido por el módulo en realidad, sino que puede asignarlo el usuario (o un programa) para especificar una acción de limpieza a ejecutar a la salida del programa. Si se le asigna valor, debe ser una función sin parámetros. Se llamará a esta función cuando termine la ejecución del intérprete. Sólo se puede instalar una función así. Para hacer que se ejecuten varias funciones a la salida del intérprete, se ha de utilizar el módulo atexit. Nota: no se ejecuta la función de salida si el programa muere por una señal, cuando se detecta un error interno de Python o se llama a os._exit().

getrefcount (object)
Devuelve el saldo de referencias del objeto object. El saldo devuelto es generalmente uno más de lo esperado, porque incluye la referencia (temporal) como argumento de getrefcount().

getrecursionlimit ()
Devuelve el valor actual del límite de recursión, la profundidad máxima de la pila del intérprete de Python. Este límite impide que la recursión infinita cause un desbordamiento de la pila de C y estrelle Python. Se puede asignar el valor con setrecursionlimit().

hexversion
El número de versión codificado como un solo entero. Se garantiza que se incrementará con cada versión, incluyendo las versiones parciales de desarrollo. Por ejemplo, para comprobar si el intérprete de Python tiene al menos la versión 1.5.2, se usa:

if sys.hexversion >= 0x010502F0:
    # usar características avanzadas
    ...
else:
    # usar la implementación alternativa o avisar al usuario
    ...

Se llama "hexversion" porque sólo es legible como resultado de pasárselo a la función interna hex(). Se puede usar el valor version_info si se desea una codificación más cercana a los humanos de la misma información. Nuevo en la versión 1.5.2.

last_type
last_value
last_traceback
Estas tres variables no están siempre definidas. Se establece su valor cuando no se gestiona una excepción y el intérprete presenta un mensaje de error y una retraza de la pila. Su objetivo es permitir que un usuario interactivo importe un módulo de depurado y comience una depuración post-mortem sin tener que volver a ejecutar la orden que causó el error (lo típico es "import pdb; pdb.pm()" para entrar en el depurador post-mortem; puede consultarse más en ``El depurador de Python'').

El significado de las variables es el mismo que las variables devueltas por exc_info(), explicada anteriormente (como sólo hay un hilo de ejecución activo, no hay problemas de hilos en estas variables, no como en exc_type, etc.).

maxint
El mayor entero positivo soportado por el tipo entero normal de Python. Debe ser al menos 2**31-1. El mayor (en valor absoluto) entero negativo es -maxint-1. La asimetría es resultado de la aritmética binaria en complemento a 2.

modules
Un diccionario que hace corresponder nombres de módulos con los módulos ya cargados. Se puede manipular para forzar la recarga de módulos y otros trucos. Eliminar un módulo de este diccionario not es lo mismo que llamar a reload() sobre el objeto módulo correspondiente.

path
Una lista de cadenas que especifica el camino de búsqueda de módulos. Inicializada a partir de la variable de entorno $PYTHONPATH o un valor predeterminado dependiente de la instalación.

El primer elemento de esta lista, path[0], es el directorio que contiene el guion utilizado para invocar al intérprete de Python. Si el directorio no está disponible (porque se llamó al intérprete de manera interactiva o si se lee el guion de la entrada estándar), path[0] es la cadena vacía, lo que dirige a Python a buscar los módulos en el directorio actual primero. Véase que el directorio del guion se inserta antes que las entradas resultantes de $PYTHONPATH.

platform
Esta cadena contiene un identificador de plataforma, por ejemplo 'sunos5' o 'linux1'. Se puede utilizar para agregar componentes específicos de la plataforma a path, por ejemplo.

prefix
Una cadena que indica el prefijo del directorio específico de la instalación donde se instalan los ficheros Python independientes de plataforma. Por omisión, vale '/usr/local'. Se puede asignar este valor en tiempo de compilación con el argumento --prefix del guion configure. La colección principal de módulos de la biblioteca de Python se instala en el directorio prefix + '/lib/pythonversion' mientras que los ficheros de cabecera independientes de la plataforma (todos salvo config.h) se almacenan en prefix + '/include/pythonversion', donde version vale version[:3].

ps1
ps2
Cadenas que especifican el indicador principal y secundario del intérprete. Sólo están definidas si el intérprete se halla en modo interactivo. Sus valores iniciales en tal caso son '»> ' and '... '. Si se asigna algo que no sea una cadena a cualquiera de las dos variables, se evalúa con str() cada vez que el intérprete se prepara para leer una nueva orden interactiva. Se puede utilizar esto para implementar un indicador dinámico.

setcheckinterval (interval)
Especifica el ``intervalo de comprobación'' del intérprete. Este entero determina la frecuencia con la que el intérprete comprueba cosas periódicas, como los cambios de hilo de ejecución y los gestores de señales. El valor predeterminado es 10, que significa que la comprobación se lleva a cabo cada 10 instrucciones virtuales de Python. Asignarle un valor mayor podría incrementar el rendimiento de los programas que utilizan hilos. Un valor <= 0 provoca una comprobación cada instrucción virtual, lo que maximiza la respuesta del sistema a cambio de un máximo de carga improductiva del sistema.

setprofile (profilefunc)
Establece la función de perfilado del sistema, lo que permite implementar un perfilador de código fuente en Python. Consultar el capítulo acerca del perfilador de Python. La función de perfilado del sistema se invoca de manera similar a la función de seguimiento del sistema (ver settrace()), pero no se llama cada línea ejecutada del código (sólo en llamadas y retornos, y en las excepciones). Además, su valor de retorno no se utiliza, por lo que puede devolver None sin más.

setrecursionlimit (limit)
Establece la profundidad máxima de la pila del intérprete de Python al valor limit. Esto impide que la recursión infinita cause un desbordamiento de la pila de C y estrelle el intérprete de Python.

El máximo límite posible es dependiente de la plataforma. El usuario puede establecer un límite más elevado si tiene un programa que requiere recursión intensa y una plataforma que lo soporta. Hay que obrar con cautela, porque un límite demasiado permisivo puede provocar un cuelgue.

settrace (tracefunc)
Establece la función de seguimiento del sistema, que permite implementar un depurador de código fuente Python, en Python. Consultar la sección ``Cómo funciona'' en el capítulo del depurador de Python.

stdin
stdout
stderr
Objetos fichero que corresponden con los flujos de entrada, salida y error estándar del intérprete. Se utiliza stdin para toda la entrada del intérprete exceptuando para los guiones, pero incluyendo las llamadas a input() y a raw_input(). stdout se utiliza para las salidas de print y las sentencias-expresión y los indicadores de input() y raw_input(). Los indicadores del propio intérprete y (casi todos) los mensajes de error van a stderr. stdout y stderr no han de ser objetos fichero internos. Cualquier objeto es aceptable siempre que tenga un método write() que tome un argumento cadena (sustituir estos objetos no afecta a los flujos de E/S estándar de los procesos ejecutados con las funciones os.popen(), os.system() o la familia exec*() del módulo os).

__stdin__
__stdout__
__stderr__
Estos objetos mantienen los valores originales de stdin, stderr y stdout al inicio del programa. Se utilizan en la finalización y podrían utilizarse para restaurar los ficheros a un flujo conocido en caso de que se sobreescriban con objetos anómalos.

tracebacklimit
Cuando se da un valor entero a esta variable, determina el mayor número de niveles de información de retraza presentados cuando se lanza una excepción no gestionada. El valor predeterminado es 1000. Si se establece a 0 o negativo, se suprime toda la información de retraza y la información presentada se limita al tipo y valor de la excepción.

version
Una cadena que contiene el número de versión del intérprete de Python más información acerca del número de construcción y el compilador utilizado. Tiene un valor de la forma 'versión (#construcción, fecha_compilación, hora_compilación) [compilador]'. Se utilizan los tres primeros caracteres para identificar la versión en los directorios de instalación (si ha lugar). Por ejemplo:

>>> import sys
>>> sys.version
'1.5.2 (#0 Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)]'

version_info
Una tupla que contiene los cinco componentes del número de versión: major, minor, micro, releaselevel y serial. Todos los valores son enteros salvo releaselevel, que es 'alpha', 'beta', 'candidate' o 'final'. El valor version_info correspondiente a la versión de Python 2.0 es (2, 0, 0, 'final', 0). Nuevo en la versión 2.0.

winver
El número de versión utilizado para formar claves de registro en las plataformas Windows. Se almacena como recurso de cadena 1000 en la DLL de Python. El valor suele estr formado por los tres primeros caracteres de version. Se proporciona en el módulo sys a efectos informativos, pues su modificación no tiene efecto sobre las claves de registro que utiliza Python. Disponibilidad: Windows.

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