Python - Argumentos de la línea de comandos

Python proporciona una getopt módulo que le ayuda a analizar 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:

  • sys.argv es la lista de argumentos de la línea de comandos.

  • len (sys.argv) es el número de argumentos de la línea de comandos.

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

Ejemplo

Considere el siguiente script test.py:

#!/usr/bin/python

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

Este producto sigue el resultado:

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

NOTE - 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 getoptmódulo que le ayuda a analizar 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. La siguiente es una sintaxis simple para este método:

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

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

  • args - Esta es la lista de argumentos a analizar.

  • options - 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 (:).

  • long_options- 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 (option, value)pares. El segundo es la lista de argumentos del programa que quedan después de eliminar la lista de opciones.

  • Cada par de opción y valor devuelto tiene la opción como 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 atributosmsg y opt dar el mensaje de error y la opción relacionada.

Ejemplo

Considere 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/python

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:])

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
Input file is " inputfile
Output file is "