El módulo sys en Python proporciona varias funciones y variables que se utilizan para manipular diferentes partes del entorno de tiempo de ejecución de Python. Permite operar sobre el intérprete ya que proporciona acceso a las variables y funciones que interactúan fuertemente con el intérprete. Consideremos el siguiente ejemplo.
Ejemplo:
Python3
import sys print(sys.version)
Producción:
3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0]
En el ejemplo anterior, se usa sys.version , que devuelve una string que contiene la versión de Python Interpreter con información adicional. Esto muestra cómo el módulo sys interactúa con el intérprete. Profundicemos en el artículo para obtener más información sobre el módulo sys.
Entrada y salida usando sys
Los módulos sys proporcionan variables para un mejor control sobre la entrada o la salida. Incluso podemos redirigir la entrada y salida a otros dispositivos. Esto se puede hacer usando tres variables:
- Entrada estándar
- salida estándar
- estándar
stdin: se puede utilizar para obtener entradas directamente desde la línea de comandos. Se utiliza para la entrada estándar. Internamente llama al método input(). También agrega automáticamente ‘\n’ después de cada oración.
Ejemplo:
Python3
import sys for line in sys.stdin: if 'q' == line.rstrip(): break print(f'Input : {line}') print("Exit")
Producción:
stdout: un objeto de archivo incorporado que es análogo al flujo de salida estándar del intérprete en Python. stdout se utiliza para mostrar la salida directamente en la consola de pantalla. La salida puede ser de cualquier forma, se puede generar desde una declaración de impresión, una declaración de expresión e incluso un aviso directo para la entrada. De forma predeterminada, las secuencias están en modo de texto. De hecho, cada vez que se llama a una función de impresión dentro del código, primero se escribe en sys.stdout y luego finalmente en la pantalla.
Ejemplo:
Python3
import sys sys.stdout.write('Geeks')
Geeks
stderr: cada vez que ocurre una excepción en Python, se escribe en sys.stderr.
Ejemplo:
Python3
import sys def print_to_stderr(*a): # Here a is the array holding the objects # passed as the argument of the function print(*a, file = sys.stderr) print_to_stderr("Hello World")
Producción:
Argumentos de la línea de comandos
Los argumentos de la línea de comandos son aquellos que se pasan durante la llamada del programa junto con la declaración de llamada. Para lograr esto usando el módulo sys, el módulo sys proporciona una variable llamada sys.argv . Su finalidad principal son:
- Es una lista de argumentos de línea de comandos.
- len(sys.argv) proporciona el número de argumentos de la línea de comandos.
- sys.argv[0] es el nombre del script de Python actual.
Ejemplo: considere un programa para sumar números y los números se pasan junto con la declaración de llamada.
Python3
# Python program to demonstrate # command line arguments import sys # total arguments n = len(sys.argv) print("Total arguments passed:", n) # Arguments passed print("\nName of Python script:", sys.argv[0]) print("\nArguments passed:", end = " ") for i in range(1, n): print(sys.argv[i], end = " ") # Addition of numbers Sum = 0 for i in range(1, n): Sum += int(sys.argv[i]) print("\n\nResult:", Sum)
Producción:
Salir del programa
sys.exit([arg]) se puede usar para salir del programa. El argumento opcional arg puede ser un número entero que proporcione la salida u otro tipo de objeto. Si es un número entero, cero se considera «terminación exitosa».
Nota: También se puede pasar una string al método sys.exit().
Ejemplo:
Python3
# Python program to demonstrate # sys.exit() import sys age = 17 if age < 18: # exits the program sys.exit("Age less than 18") else: print("Age is not less than 18")
Producción:
An exception has occurred, use %tb to see the full traceback. SystemExit: Age less than 18
Trabajar con módulos
sys.path es una variable incorporada dentro del módulo sys que devuelve la lista de directorios en los que el intérprete buscará el módulo requerido.
Cuando se importa un módulo dentro de un archivo de Python, el intérprete primero busca el módulo especificado entre sus módulos integrados. Si no lo encuentra, busca en la lista de directorios definidos por sys.path .
Nota: sys.path es una lista normal y se puede manipular.
Ejemplo 1: Listado de todos los caminos
Python3
import sys print(sys.path)
Producción:
Ejemplo 2: Truncar el valor de sys.path
Python3
import sys # Removing the values sys.path = [] # importing pandas after removing # values import pandas
Producción:
ModuleNotFoundError: No module named 'pandas'
sys.modules devuelve el nombre de los módulos de Python que ha importado el shell actual.
Ejemplo:
Python3
import sys print(sys.modules)
Producción:
Recuento de referencia
El método sys.getrefcount() se utiliza para obtener el recuento de referencias de cualquier objeto dado. Python utiliza este valor, ya que cuando este valor se convierte en 0, se elimina la memoria para ese valor en particular.
Ejemplo:
Python3
import sys a = 'Geeks' print(sys.getrefcount(a))
4
Más funciones en Python sys
Función | Descripción |
---|---|
sys.setrecursionlimit() | El método sys.setrecursionlimit() se usa para establecer la profundidad máxima de la pila del intérprete de Python en el límite requerido. |
método sys.getrecursionlimit() | El método sys.getrecursionlimit() se usa para encontrar el límite de recurrencia actual del intérprete o para encontrar la profundidad máxima de la pila de intérpretes de Python. |
sys.settrace() | Se utiliza para implementar depuradores, perfiladores y herramientas de cobertura. Esto es específico del subproceso y debe registrar el seguimiento utilizando threading.settrace(). En un nivel superior, sys.settrace() registra el rastreo al intérprete de Python |
método sys.setswitchinterval() | El método sys.setswitchinterval() se usa para establecer el intervalo de cambio de hilo del intérprete (en segundos). |
sys.maxsize() | Obtiene el valor más grande que puede almacenar una variable de tipo de datos Py_ssize_t. |
sys.maxint | maxint/INT_MAX denota el valor más alto que puede ser representado por un número entero. |
método sys.getdefaultencoding() | El método sys.getdefaultencoding() se utiliza para obtener la codificación de string predeterminada actual utilizada por la implementación de Unicode. |
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA