Tecnología

Inicio

Cómo construir un analizador en Python

Cómo construir un analizador en Python


En Python, como en muchos otros idiomas, es necesario manejar la entrada del usuario a un programa lanzado desde la línea de comandos. La biblioteca "sys" Python contiene un mayor número de parámetros específicos del sistema, incluyendo las funciones necesarias para manejar argumentos de la línea de comandos. La biblioteca de Python "getopt" proporciona un método útil para analizar un gran número de argumentos de línea de comandos y banderas en diferentes formatos.

Preparar

Abra un editor de texto y comenzar a escribir un nuevo documento de Python. Formatear el programa de la siguiente manera. La biblioteca "sys" contiene funciones para el manejo de variables de argumentos. Va a despojar sys.argv [0], ya que es el nombre del script, en este caso "my_program.py." La verificación "nombre" se asegura de que la secuencia de comandos se llama desde la línea de comandos, en lugar de otro programa.

my_program.py

getopt importación, sys

def main (argv):

analizador argumento irá aquí

si el nombre == "principal":
principal (sys.argv [1:])

usando Getopt

Llame a la función ") (getopt.getopt" desde dentro de su función "main ()" con la siguiente sintaxis. Para este ejemplo, los argumentos de "my_program.py" incluyen una bandera "-v" para la salida detallada, una bandera "h" o "help" para imprimir el uso, y una "i" o "--input "para especificar un archivo de entrada.

def main (argv):
tratar:

opts, args = getopt.getopt(argv, "hi:v", ["help", "input"]);

excepto: a excepción getopt.GetoptError, err:

print str(err); #print error
usage(); #User-written function to print appropriate usage of program
sys.exit(2);
Configurar valores predeterminados

verbosa = false;
archivo_entrada = Ninguna;
para o, en una apuesta:

if o in ("-h", "--help"):
usage(); sys.exit();
elif o == "-v":
verbose = True;
elif o in ("-i", "--input"):
input_file = a;
else:
assert False, "Unknown argument."

si (archivo_entrada == Ninguno):

print "No input file given.";
usage(); sys.exit(2);

usando Argparser

La biblioteca "argparser" proporciona una forma similar de análisis de argumentos con menos código y mensajes de error más detallados.

argpase importación, sys

def main ():
analizador = argparse.ArgumentParser ()
parser.add_argument ( '- i', '- de entrada', dest = 'archivo_entrada', type = str, ayuda = "Archivo de entrada")
parser.add_argument ( '- h', '- help')
parser.add_argument ( '- v', dest = 'detallado', action = 'store_true')
args = parser.parse_args ()

El código para comprobar la validez de los argumentos

consideraciones

Si está preparando su programa de Python para la distribución, es importante para manejar todos los posibles escenarios de uso en la comprobación de argumentos de entrada. Por ejemplo, un nombre de archivo deben ser evaluados para determinar si se vincula a un archivo del formato adecuado. Otras variables deben ser evaluados para determinar que su valor ha significado dentro del programa.