El módulo sys de la librería estándar de MicroPython, proporciona acceso a variables y funciones específicas del sistema.
Son variables utilizadas o mantenidas por el intérprete y funciones que interactúan estrechamente con el intérprete.
- Las variables disponibles son: sys.path, sys.modules, sys.argv, sys.version, sys.version_info, sys.implementation, sys. platform, sys.byteorder, sys.maxsize.
- Los funciones disponibles, son los métodos: sys.exit() y sys.print_exception() y los streams: sys.stdin, sys.stdout y sys.stderr.
VARIABLES
sys.path |
Devuelve una lista (lst) con las carpetas, en las que se buscarán los módulos, para ser importados. La preferencia de importación es el del orden de las entradas de sys.path.
Al ser una lista es mutable se puede adecuar a las necesidades de programación con suma facilidad. En este ejemplo se modifica el nombre de la carpeta /lib (que está incluida por defecto) a /lib1 y se añade una nueva carpeta /lib2, al final de la lista. |
>>> import sys >>> sys.path ['', '/lib'] #Lista de carpetas inicial >>> sys.path[1]=("/lib1") ['', '/lib1'] >>> sys.path.append("/lib2") ['', '/lib1', '/lib2']
sys.modules |
Devuelve un diccionario (dict) con los módulos importados. Puede no incluir los módulos integrados en la implementación de MicroPython. |
>>> import sys >>> sys.modules {'flashbdev': <module 'flashbdev' from 'flashbdev.py'>}
sys.argv |
Devuelve una lista (lst) con los argumentos con los que se inició el programa que se está ejecutando. |
>>> import sys >>> sys.argv []
sys.version |
Devuelve una cadena (str) en la que se informa de la versión del lenguaje Python, a la que se ajusta la implementación de MicroPython. |
>>> import sys >>> sys.version '3.4.0'
sys.version_info |
Devuelve una tupla (tuple) de números enteros en la que se informa de la versión del lenguaje Python, a la que se ajusta la implementación de MicroPython. En implementaciones de CPython únicamente se dan los primeros tres números de la versión (mayor, menor, micro). |
>>> import sys >>> sys.version_info (3, 4, 0)
sys.implementation |
Devuelve una tupla (tuple) con información a cerca de la implementación del intérprete.
|
>>> import sys >>> sys.implementation (name='micropython', version=(1, 12, 0), mpy=10757)
sys.platform |
Devuelve una cadena (str) con información sobre la plataforma en la que se ejecuta MicroPython. Se puede utilizar para distinguir una placa de otra. |
>>> import sys >>> sys.platform 'esp32'
sys.byteorder |
Devuelve una cadena (str) que describe el formato en el que se almacenan los datos de más de un byte en el microcontrolador. 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). |
>>> import sys >>> sys.byteorder 'little'
sys.maxsize |
Devuelve el número entero (ing) nativo máximo que puede manejar la plataforma (ESP32) o valor máximo admitido por el intérprete -MicroPython- como está configurado (si el valor máximo es menor que el de la plataforma, que es el caso de los puertos MicroPython sin soporte long int). Este atributo es útil para detectar el «bitness» de una plataforma (32 bits frente a 64 bits, etc.). El procedimiento para hacerlo es contar la cantidad de bits que contiene: |
import sys bits = 0 x = sys.maxsize #2147483647 while x: #... mientras x sea >= 1 ... print("{0:b}".format(x)) #Imprime x en binario bits += 1 x >>= 1 #Operación binaria de desplazamiento de bits (1 bit) if bits > 32: print("Plataforma de 64-bits (o más).") elif bits > 16: print("Plataforma de 32-bits.") else: print("Plataforma de 16 bis (o menos).")
FUNCIONES
sys.exit() |
Es una función que permite finalizar el programa, elevando la excepción SystemExit. |
import sys try: sys.exit() print("abc") except SystemExit: print("Programa finalizado con la excepción \"SystemExit\".")
sys.print_exception (exc, file) |
Es una función que permite visualizar la excepción que se ha producido. Dispone de dos argumentos, el primero obligatorio –exc-, para indicar la excepción a visualizar y el segundo optativo –file-, a utilizar si se desea grabar la excepción en un fichero.
Cuando se quiera visualizar la excepción en pantalla se procederá así: |
import sys try: int("cien") except Exception as exc: sys.print_exception(exc)
Y cuando se quiera grabar en un fichero (en este caso error.log) se procederá así: |
import sys try: int("cien") except Exception as exc: with open("error.log", "w") as file: sys.print_exception(exc,file)
stdin / stdout / stderr |
Son streams ó “file-like objects”, es decir, objetos que proporcionan acceso secuencial de lectura y escritura de los datos subyacences.
|
La entrada de los datos se puede realizar mediante el teclado, variables, estructuras de datos (listas, tuplas, sets, diccionarios...) o ficheros que contengan los parámetros de entrada que necesite el script.
La salida de los datos se puede realizar a través de la pantalla o ficheros. Los métodos (funciones) disponibles son: read(), readinto(), readline(), readlines(), write() y close(). En el siguiente ejemplo se hará salir pon pantalla ¡Hola!, Hi! y Salut! que podrían servir para simular entradas por el teclado con el fin de automatizar un proceso: |
import sys sample_input = ["¡Hola!","Hi!", "Salut!"] for x in sample_input: sys.stdout.write(x + '\n')
Leave a Reply
Tu correo electrónico está seguro.
You must be logged in to post a comment.