Argumentos de la línea de comandos en Python

Los argumentos que se dan después del nombre del programa en el shell de línea de comandos del sistema operativo se conocen como argumentos de línea de comandos . Python proporciona varias formas de lidiar con este tipo de argumentos. Los tres más comunes son: 

Usando sys.argv

El módulo sys proporciona funciones y variables que se utilizan para manipular diferentes partes del entorno de tiempo de ejecución de Python. Este módulo proporciona acceso a algunas variables utilizadas o mantenidas por el intérprete ya funciones que interactúan fuertemente con el intérprete.
Una de esas variables es sys.argv, que es una estructura de lista simple. Su finalidad principal son:

  • Es una lista de argumentos de línea de comando.
  • 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: Supongamos que hay una secuencia de comandos de Python para sumar dos números y los números se pasan como argumentos de línea de comandos.
 

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
# Using argparse module
for i in range(1, n):
    Sum += int(sys.argv[i])
     
print("\n\nResult:", Sum)

Producción:
 

python-command-line-arguments

Usando el módulo getopt

El módulo getopt de Python es similar a la función getopt() de C. A diferencia del módulo sys, el módulo getopt amplía la separación de la string de entrada mediante la validación de parámetros. Permite opciones tanto cortas como largas, incluida una asignación de valor. Sin embargo, este módulo requiere el uso del módulo sys para procesar correctamente los datos de entrada. Para usar el módulo getopt, es necesario eliminar el primer elemento de la lista de argumentos de la línea de comandos. 
 

Sintaxis: getopt.getopt(argumentos, opciones, [opciones_largas])
Parámetros: argumentos  
: Lista de argumentos a pasar. 
options: String de letras de opción que el script quiere reconocer. Las opciones que requieren un argumento deben ir seguidas de dos puntos (:). 
long_options: Lista de strings con el nombre de opciones largas. Las opciones que requieren argumentos deben ir seguidas de un signo igual (=).
Tipo de devolución: devuelve un valor que consta de dos elementos: el primero es una lista de pares (opción, valor). El segundo es la lista de argumentos del programa que quedaron después de que se eliminó la lista de opciones. 
 

Ejemplo:

Python3

# Python program to demonstrate
# command line arguments
 
 
import getopt, sys
 
 
# Remove 1st argument from the
# list of command line arguments
argumentList = sys.argv[1:]
 
# Options
options = "hmo:"
 
# Long options
long_options = ["Help", "My_file", "Output="]
 
try:
    # Parsing argument
    arguments, values = getopt.getopt(argumentList, options, long_options)
     
    # checking each argument
    for currentArgument, currentValue in arguments:
 
        if currentArgument in ("-h", "--Help"):
            print ("Displaying Help")
             
        elif currentArgument in ("-m", "--My_file"):
            print ("Displaying file_name:", sys.argv[0])
             
        elif currentArgument in ("-o", "--Output"):
            print (("Enabling special output mode (% s)") % (currentValue))
             
except getopt.error as err:
    # output error, and return with an error code
    print (str(err))

Producción:
 

python-command-line-arguments

Usando el módulo argparse

Usar el módulo argparse es una mejor opción que las dos opciones anteriores, ya que proporciona muchas opciones, como argumentos posicionales, valor predeterminado para los argumentos, mensaje de ayuda, especificación del tipo de datos del argumento, etc. 
 

Nota: Como argumento opcional predeterminado, incluye -h, junto con su versión larga –help.
 

Ejemplo 1: uso básico del módulo argparse.
 

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
# Initialize parser
parser = argparse.ArgumentParser()
parser.parse_args()

Producción:
 

python-command-line-arguments

  
Ejemplo 2: Agregar descripción al mensaje de ayuda.
 

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
msg = "Adding description"
 
# Initialize parser
parser = argparse.ArgumentParser(description = msg)
parser.parse_args()

Producción:
 

python-command-line-arguments

  
Ejemplo 3: Definición de valor opcional
 

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
 
# Initialize parser
parser = argparse.ArgumentParser()
 
# Adding optional argument
parser.add_argument("-o", "--Output", help = "Show Output")
 
# Read arguments from command line
args = parser.parse_args()
 
if args.Output:
    print("Displaying Output as: % s" % args.Output)

Producción:
 

python-command-line-arguments

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 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 *