in

Python 3 – Argumentos de la línea de comandos


Python proporciona una getopt módulo que le ayuda a analizar las opciones y argumentos de la línea de comandos.

$ python test.py arg1 arg2 arg3

El pitón sys El módulo proporciona acceso a cualquier argumento de la línea de comandos a través del sys.argv. Esto tiene dos propósitos:

Aquí sys.argv[0] es el programa, es decir. el nombre del guión.

Ejemplo

Considere el siguiente guión test.py

#!/usr/bin/python3

import sys

print ('Number of arguments:', len(sys.argv), 'arguments.')
print ('Argument List:', str(sys.argv))

Ahora ejecute el script anterior de la siguiente manera:

$ python test.py arg1 arg2 arg3

Esto produce el siguiente resultado:

Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']

NOTA – Como se mencionó anteriormente, el primer argumento es siempre el nombre del script y también se cuenta en número de argumentos.

Análisis de argumentos de la línea de comandos

Python proporcionó un getopt módulo que le ayuda a analizar las opciones y argumentos de la línea de comandos. Este módulo proporciona dos funciones y una excepción para habilitar el análisis de argumentos de la línea de comandos.

método getopt.getopt

Este método analiza las opciones de la línea de comandos y la lista de parámetros. A continuación se muestra una sintaxis simple para este método:

getopt.getopt(args, options, [long_options])

Aquí está el detalle de los parámetros:

  • argumentos – Esta es la lista de argumentos que se analizará.

  • opciones – Esta es la cadena de letras de opciones que el script quiere reconocer, con opciones que requieren un argumento deben ir seguidas de dos puntos (:).

  • opciones_largas – Este es un parámetro opcional y, si se especifica, debe ser una lista de cadenas con los nombres de las opciones largas, que deben ser compatibles. Las opciones largas, que requieren un argumento, deben ir seguidas de un signo igual (‘=’). Para aceptar solo opciones largas, las opciones deben ser una cadena vacía.

  • Este método devuelve un valor que consta de dos elementos: el primero es una lista de (valor de la opción) pares, el segundo es una lista de argumentos de programa que quedan después de eliminar la lista de opciones.

  • Cada par de opción y valor devuelto tiene la opción como su primer elemento, precedida de un guión para opciones cortas (por ejemplo, ‘-x’) o dos guiones para opciones largas (por ejemplo, ‘- opción larga’).

Excepción getopt.GetoptError

Esto se genera cuando se encuentra una opción no reconocida en la lista de argumentos o cuando una opción que requiere un argumento no se da ninguno.

El argumento de la excepción es una cadena que indica la causa del error. Los atributos msg y optar dar el mensaje de error y la opción relacionada.

Ejemplo

Supongamos que queremos pasar dos nombres de archivo a través de la línea de comandos y también queremos dar una opción para verificar el uso del script. El uso del script es el siguiente:

usage: test.py -i <inputfile> -o <outputfile>

Aquí está el siguiente script para test.py:

#!/usr/bin/python3

import sys, getopt

def main(argv):
   inputfile=""
   outputfile=""
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print ('test.py -i <inputfile> -o <outputfile>')
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print ('test.py -i <inputfile> -o <outputfile>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('Input file is "', inputfile)
   print ('Output file is "', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

Producción

Ahora, ejecute el script anterior de la siguiente manera:

$ test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ test.py -i BMP -o
usage: test.py -i <inputfile> -o <outputfile>

$ test.py -i inputfile -o outputfile
Input file is " inputfile
Output file is " outputfile

python_basic_syntax.htm

Deja una respuesta

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

Si olvide mi cuenta de Google

¿Cómo herstel ik een YouTube-account as ik de naam of gebruikersnaam van mijn Google-account ben vergeten? Stap voor stap manillar

apple touch icon@2

multiproceso: ¿Qué es una condición de carrera?