Uma das qualidades do Python é que ele acompanha as baterias incluídas: ele possui uma biblioteca padrão rica e adaptável que o destaca entre outros dialetos de programação para compor conteúdos para a linha direta. Em qualquer caso, caso você compõe conteúdos para a linha de ordem, nesse ponto você também precisa dar uma interface de linha de direção decente, o que você pode fazer com a biblioteca Python argparse.

O que é uma Interface de Linha de Direção?

A interface de linha de pedido (também chamada de CLI) é uma forma de colaborar com o conteúdo de uma linha direta. Python acompanha algumas bibliotecas distintas que lhe permitem compor uma interface de linha de pedido para seu conteúdo, no entanto, a rota padrão para fazer uma CLI em Python é agora mesmo a biblioteca Python argparse.

A biblioteca Python argparse foi liberada como um aspecto importante da biblioteca padrão com o Python 3.2 em 20 de fevereiro de 2011. Ela foi apresentada com a Proposta de Atualização Python 389 e atualmente é o método padrão para fazer uma CLI em Python, tanto nas formas 2.7 como 3.2+.

Este novo módulo foi descarregado como uma troca para os módulos getopt e optparse mais estabelecidos, uma vez que eles eram inadequados em relação a alguns destaques significativos.

A biblioteca Python argparse:

$ ls

dcdb_20180201201.sg4 mastro35.sg4         aberturas.sg4

dcdb_20180201201.si4 mastro35.si4         aberturas.si4

dcdb_20180201201.sn4 mastro35.sn4         aberturas.sn4

Permite a utilização de contenções posicionais

Permite a customização das queimaduras de prefixo

Suporta quantidades variáveis de parâmetros para uma escolha solitária

Suporta sub-mandos (Um analisador de linha de ordem fundamental pode utilizar outros analisadores de linha de direção confiando em certos contenciosos).

Antes de começar, você tem que perceber como funciona uma interface de linha de ordem, então abra um terminal no seu PC e execute os ls de ordem para obter o rundown dos registros contidos no presente índice desta forma:

Como deve ser óbvio, existem muitos documentos no presente catálogo, porém, a direção não restaurou grande quantidade de dados sobre esses registros.

Felizmente, você não precisa procurar por outro programa para ter um resumo mais extravagante dos documentos contidos no catálogo de fluxo. Você também não precisa alterar a ordem ls, pois ela recebe uma interface de linha de direção, que é apenas um monte de fichas (chamadas de contenções) que você pode usar para desenhar a condução dessa direção.

Atualmente, tente executar a ordem ls mais uma vez, ainda com a adição da – l escolha na linha de direção como no modelo abaixo:

$ ls -l

total 641824

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

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

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

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

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

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

-rw——- 1 dave pessoal 29128 17 Abr 2018 inaugurações.sg4

-rw——- 1 dave pessoal 276 17 Abr 2018 inaugurações.si4

-rw——- 1 dave pessoal 86 18 Abr 2018 inaugurações.sn4

O rendimento é totalmente diferente neste ponto. O pedido foi restaurado uma tonelada de dados sobre os consentimentos, proprietário, coleta e tamanho de cada documento e a ocupação do registro na placa.

Isso porque você utilizou a interface da linha de pedido da direção ls e determinou a – l escolha que dá poder ao longo arranjo, uma configuração extraordinária que lucra significativamente mais dados para cada documento registrado.

Para se familiarizar com este tema, você vai ler uma tonelada sobre conteúdos, alternativas e parâmetros, então devemos explicar o fraseado imediatamente:

A disputa é uma parte solitária de uma linha direta, delimitada por espaços.

Uma alternativa é um tipo específico de contenda (ou parte de uma contenda) que pode mudar a conduta da linha de ordem.

Um parâmetro é um tipo específico de contenda que dá dados extras a uma escolha ou ordem solitária.

Pense na direção que o acompanha:

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

Neste modelo, você tem cinco contenções únicas:

ls: o nome da direção que você está executando

– l: uma escolha para fortalecer a considerável posição de rundown

– s: uma escolha para imprimir o tamanho alocado de cada registro

– k: uma escolha para ter o tamanho em kilobytes

/var/log: um parâmetro que dá dados extras (a maneira de inclinar) para a direção

Note que, na hipótese de você ter diferentes alternativas em uma linha de ordem solitária, nesse ponto você pode juntá-las em uma disputa solitária como essa:

$ ls – lsk/var/log

Aqui você tem apenas três contenções:

ls : o nome da ordem que você está executando

– lsk: as três escolhas distintas que você precisa fortalecer (uma mistura de – l, – s, e – k)

/var/log: um parâmetro que dá dados extras (a forma de inclinação) para a ordem

Quando Utilizar uma Interface de Linha Direção

Como você compreende o que é uma interface de linha de direção, você pode estar ponderando quando é um pensamento inteligente executar uma em seus projetos. A diretriz geral é que, caso você precise dar uma maneira fácil de usar para lidar com o projeto do seu programa, nesse ponto você deve considerar uma interface de linha de direção, e o método padrão para fazê-lo é utilizando a biblioteca Python argparse.

Independentemente de você estar fazendo um programa de linha de pedidos intrincado que precisa de um registro de arranjo para funcionar, caso você precise dar ao seu cliente uma chance de indicar qual documento de projeto utilizar, é um pensamento inteligente reconhecer este incentivo fazendo uma interface de linha direta com a biblioteca Python argparse.

O método mais eficaz para Utilizar a biblioteca Python argparse para fazer uma Interface de Linha de Direção

A utilização da biblioteca Python argparse tem quatro etapas:

Importar a biblioteca Python argparse

Faça o analisador

Adicionar contenções discricionárias e posicionais ao analisador

Executar .parse_args()

Após executar .parse_args(), o que você obtém é um objeto Namespace que contém uma propriedade direta para cada contenção de informação obtida a partir da linha de direção.

Para ver essas quatro etapas em detalhes com um modelo, que tal imaginarmos que você esteja fazendo um programa chamado myls.py, que resgata os registros contidos no presente catálogo. Aqui está uma possível utilização da interface da sua linha de pedidos sem utilizar a biblioteca Python argparse:

# myls.py

importação de

sistema de importação

if len(sys.argv) > 2:

    print(‘Você especificou demasiados argumentos’)

    sys.exit()

se len(sys.argv) < 2:

    print(‘Você precisa especificar o caminho a ser listado’)

    sys.exit()

input_path = sys.argv[1]

if not os.path.isdir(input_path):

    print(‘O caminho especificado não existe’)

    sys.exit()

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

Esta é uma possível implementação da interface de linha de comando para seu programa que não utiliza a biblioteca Python argparse, mas se você tentar executá-la, então você verá que ela funciona:

$ python myls.py

Você precisa especificar o caminho a ser listado

$ python myls.py /mnt /proc /dev

Você especificou muitos argumentos

$ python myls.py /mnt

dir1

dir2

Como você pode ver, o script funciona, mas a saída é bem diferente da saída que você esperaria de um comando padrão embutido.

Agora, vamos ver como a biblioteca Python argparse pode melhorar este código:

# myls.py

# Importar a biblioteca argparse

argamassa de importação

importação de

sistema de importação

# Criar o analisador

my_parser = argparse.ArgumentParser(description=’Listar o conteúdo de uma pasta’)

# Adicione os argumentos

my_parser.add_argument(‘Caminho’,

                       metavar=’caminho’,

                       type=str,

                       help=’the path to list’)

# Executar o método parse_args()

args = my_parser.parse_args()

input_path = args.Path

if not os.path.isdir(input_path):

    print(‘O caminho especificado não existe’)

    sys.exit()

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

O código mudou muito com a introdução da biblioteca Python argparse.