Una de las cualidades de Python es que acompaña a las baterías incluidas: tiene una rica y adaptable biblioteca estándar que la hace sobresalir entre otros dialectos de programación para componer contenidos para la línea directa. En cualquier caso, en el caso de que compongas contenidos para la línea de órdenes, en ese punto también necesitas dar una interfaz de línea de dirección decente, que puedes hacer con la librería argparse de Python.

¿Qué es una interfaz de línea de dirección?

La interfaz de línea de órdenes (también llamada CLI) es una forma de colaborar con un contenido de línea directa. Python acompaña a algunas bibliotecas distintas que permiten componer una interfaz de línea de orden para sus contenidos, sin embargo, la ruta estándar para hacer una CLI en Python es ahora mismo la biblioteca argparse de Python.

La biblioteca de Python argparse fue dada de alta como un aspecto importante de la biblioteca estándar con Python 3.2 el 20 de febrero de 2011. Fue presentada con la Propuesta de Actualización de Python 389 y es actualmente el método estándar para hacer un CLI en Python, tanto en las formas 2.7 y 3.2+.

Este nuevo módulo se descartó como un comercio para los módulos más establecidos de getopt y optparse, ya que eran inadecuados con respecto a algunos aspectos destacados importantes.

La biblioteca de Python Argparse:

$ ls

dcdb_20180201.sg4 mastro35.sg4         aperturas.sg4

dcdb_20180201.si4 mastro35.si4         aperturas.si4

dcdb_20180201.sn4 mastro35.sn4         aperturas.sn4

Permite la utilización de los contenciosos posicionales

Permite la personalización de las quemaduras de los prefijos

Soporta cantidades variables de parámetros para una elección solitaria

Soporta subcomandos (Un analizador de líneas de orden fundamental puede utilizar otros analizadores de líneas de dirección confiando en ciertas afirmaciones.)

Antes de empezar, tienes que darte cuenta de cómo funciona una interfaz de línea de órdenes, así que abre una terminal en tu PC y ejecuta la orden ls para obtener el resumen de los registros contenidos en el presente índice de esta manera:

Como debe ser obvio, hay muchos documentos en el presente catálogo, sin embargo, la dirección no restauró una gran cantidad de datos sobre estos registros.

Afortunadamente, no tienes que buscar otro programa para tener un resumen más extravagante de los documentos contenidos en el catálogo de flujo. Tampoco tienes que alterar tú mismo el orden de ls, ya que recibe una interfaz de línea de dirección, que es sólo un montón de fichas (llamadas contenciones) que puedes usar para diseñar la conducta de esta dirección.

Actualmente intenta ejecutar la orden ls una vez más, pero añadiendo la – l elección a la línea de dirección como en el modelo de abajo:

$ ls -l

total 641824

-rw——- 1 dave staff 204558286 5 Mar 2018 dcdb_20180201.sg4

-rw——- 1 dave staff 110588409 5 Mar 2018 dcdb_20180201.si4

-rw——- 1 dave staff 2937516 5 Mar 2018 dcdb_20180201.sn4

-rw——- 1 dave staff 550127 27 Mar 2018 mastro35.sg4

-rw——- 1 dave staff 15974 11 Gen 17:01 mastro35.si4

-rw——- 1 dave staff 3636 27 Mar 2018 mastro35.sn4

-rw——- 1 dave staff 29128 17 Apr 2018 openings.sg4

-rw——- 1 dave staff 276 17 Abr 2018 openings.si4

-rw——- 1 dave staff 86 18 Abr 2018 openings.sn4

El rendimiento es completamente diferente en este punto. El orden se restauró una tonelada de datos sobre los consentimientos, propietario, recolección, y tamaño de cada documento y la ocupación de registro en la placa.

Esto se debe a que utilizó la interfaz de la línea de orden de la dirección ls y determinó la – l elección que potencia el arreglo largo, una configuración extraordinaria que beneficia significativamente más datos para todos y cada uno de los documentos registrados.

Para familiarizarse con este tema, se va a examinar mucho sobre los contenciosos, las alternativas y los parámetros, por lo que debemos explicar la frase inmediatamente:

La contención es una parte solitaria de una línea directa, delimitada por espacios.

Una alternativa es un tipo específico de contención (o una parte de una contención) que puede cambiar la conducta de la línea de orden.

Un parámetro es un tipo específico de contención que da datos adicionales a una elección u orden solitaria.

Piense en la dirección que lo acompaña:

$ ls – l – s – k/var/log

En este modelo, tienes cinco contiendas únicas:

Es: el nombre de la dirección que está ejecutando

– l: una elección para potenciar la considerable posición de la decadencia

– s: una opción para imprimir el tamaño asignado de cada registro

– k: una opción para tener el tamaño en kilobytes

/var/log: un parámetro que da datos extra (la forma de inclinarse) a la dirección

Ten en cuenta que, en el caso de que tengas diferentes alternativas en una línea de orden solitario, en ese punto puedes unirlas en una contienda solitaria como esta:

$ ls – lsk/var/log

Aquí tienes sólo tres contenciones:

Es: el nombre de la orden que está ejecutando.

– lsk: las tres opciones distintas que necesitas para potenciar (una mezcla de – l, – s, y – k)

/var/log: un parámetro que da datos extra (la forma de inclinarse) al orden

Cuándo utilizar una interfaz de línea de dirección

Ya que comprendes lo que es una interfaz de línea de dirección, podrías estar pensando cuando es un pensamiento inteligente ejecutar una en tus proyectos. La pauta general es que, en el caso de que necesites dar una forma fácil de usar para tratar de diseñar tu programa, en ese punto deberías considerar una interfaz de línea direccional, y el método estándar para hacerlo es utilizando la biblioteca argparse de Python.

Independientemente de si está haciendo un intrincado programa de línea de órdenes que necesita un registro de arreglos para funcionar, en caso de que necesite dar a su cliente la oportunidad de indicar qué documento de diseño debe utilizar, es una idea inteligente reconocer este incentivo haciendo una interfaz de línea directa con la biblioteca argparse de Python.

El método más efectivo para utilizar la biblioteca de argparse de Python para hacer una interfaz de línea de dirección

La utilización de la biblioteca de argparse de Python tiene cuatro etapas:

Importar la biblioteca de Python argparse

Haz el analizador

Agregar contenciones discrecionales y posicionales al analizador

Ejecutar .parse_args()

Después de ejecutar .parse_args(), lo que se obtiene es un objeto de espacio de nombres que contiene una propiedad directa para cada contención de información obtenida de la línea de dirección.

Para ver estas cuatro etapas en detalle con un modelo, qué tal si imaginamos que está haciendo un programa llamado myls.py que ejecuta los registros contenidos en el presente catálogo. Aquí hay un uso potencial de su interfaz de línea de órdenes sin utilizar la biblioteca de argparse de Python:

# myls.py

importar os

sistema de importación

si len(sys.argv) > 2:

    print(‘Has especificado demasiados argumentos’)

    sys.exit()

si len(sys.argv) < 2:

    print(‘Necesitas especificar el camino a seguir’)

    sys.exit()

ruta_de_entrada = sys.argv[1]

si no os.path.isdir(camino_de_entrada):

    print(‘El camino especificado no existe’)

    sys.exit()

print(‘\n’.join(os.listdir(input_path)))

Esta es una posible implementación de la interfaz de línea de comandos para tu programa que no utiliza la biblioteca argparse de Python, pero si intentas ejecutarla, verás que funciona:

$ pitón myls.py

Es necesario especificar el camino a ser listado

$ python myls.py /mnt /proc /dev

Ha especificado demasiados argumentos

$ python myls.py /mnt

dir1

2 dírhams.

Como puedes ver, el guión funciona, pero el resultado es bastante diferente del que esperarías de un comando incorporado estándar.

Ahora, veamos cómo la biblioteca de argparse de Python puede mejorar este código:

# myls.py

# Importar la biblioteca argparse

importación argparse

importar os

sistema de importación

# Crear el analizador

my_parser = argparse.ArgumentParser(description=’Listar el contenido de una carpeta’)

# Agrega los argumentos

mi_parser.add_argument(‘Camino’,

                       metavar=’camino’,

                       type=str,

                       help=’the path to list’)

# Ejecutar el método parse_args()

args = mi_parser.parse_args()

ruta_de_entrada = args.Ruta

si no os.path.isdir(camino_de_entrada):

    print(‘El camino especificado no existe’)

    sys.exit()

print(‘\n’.join(os.listdir(input_path)))

El código ha cambiado mucho con la introducción de la biblioteca argparse de Python.