Módulo del sistema de Python

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')
Producción

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:

python-stderr

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:

python-command-line-arguments

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))
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *