Como adicionar argumentos da linha de comando a um script python

Como adicionar argumentos da linha de comando a um script python

Se você desenvolveu um script ou aplicativo Python destinado a ser executado principalmente em emuladores de terminais ou mesmo aplicativos de GUI, adicionar argumentos na linha de comando pode melhorar sua usuidade, legibilidade de código, estrutura de aplicativos e facilidade de uso geral do aplicativo para os usuários finais. Esses argumentos da linha de comando também são chamados de "opções" ou "switches" e funcionam de maneira semelhante aos argumentos que você geralmente vê em scripts de bash e outros programas baseados em C / C ++.

Para adicionar argumentos aos scripts python, você terá que usar um módulo embutido chamado "argparse". Como o nome sugere, ele analisa os argumentos da linha de comando usados ​​durante o lançamento de um script ou aplicativo Python. Esses argumentos analisados ​​também são verificados pelo módulo "argparse" para garantir que eles sejam de "tipo" adequado. Erros são levantados se houver valores inválidos em argumentos.

O uso do módulo Argparse pode ser melhor compreendido através de exemplos. Abaixo estão algumas amostras de código que irão você começar com o módulo ArgParse.

Exemplo 1: gerar argumento de ajuda e mensagem

Considere o exemplo de código abaixo:

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
args = analisador.parse_args ()

A primeira declaração importa o módulo "argparse". Em seguida, uma nova instância do objeto "ArgumentParser" é criada e uma breve descrição do programa é fornecida como um argumento. O objeto ArgumentParser é necessário para converter valores de argumento da linha de comando em tipos de dados entendidos pelo Python. Isso é feito pelo método "parse_args" de objeto ArgumentParser, como mostrado na última declaração.

Supondo que você tenha salvado o exemplo de código declarado acima em um arquivo chamado “Teste.PY ”, executando os comandos abaixo receberá mensagens de ajuda relacionadas ao programa.

$ ./teste.py -h
$ ./teste.PY -Help

Você deve obter alguma saída semelhante a isso:

Uso: teste.py [-h]
Um programa de teste.
Argumentos opcionais:
-H, --Help Mostra esta mensagem de ajuda e saída

Observe que nenhuma lógica para lidar com argumentos analisados ​​e convertê -los em objetos foi adicionada à amostra de código mencionada acima. Portanto, mensagens de ajuda para argumentos individuais não são mostradas na saída. Depois de adicionar lógica para lidar com valores de argumentos analisados ​​em seu programa, as mensagens de ajuda começarão a mostrar a descrição para argumentos individuais.

Exemplo 2: lidar com um argumento de string

Para adicionar argumentos aceitáveis ​​pelo seu script python, você precisa usar o método "add_argument". Dê uma olhada no seguinte código:

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("print_string", help = "imprime o argumento fornecido.")
args = analisador.parse_args ()
Imprimir (args.print_string)

Uma nova declaração foi adicionada mostrando o uso do método "add_argument". Qualquer argumento adicionado ao lançar o script será tratado como um objeto "Print_string" por "ArgumentParser".

Observe que, por padrão, o método "add_argument" trata os valores recuperados dos argumentos como strings, para que você não precise especificar explicitamente o "tipo" neste caso. Um valor padrão de "nenhum" também é atribuído a argumentos adicionados, a menos que substitua.

Mais uma vez, dê uma olhada na mensagem de ajuda:

Uso: teste.py [-h] [print_string]
Um programa de teste.
Argumentos posicionais:
print_string imprime o argumento fornecido.
Argumentos opcionais:
-H, --Help Mostra esta mensagem de ajuda e saída

Uma das linhas na saída diz “argumentos posicionais”. Como nenhuma palavra -chave para argumento é definida, atualmente o argumento é tratado como um "argumento posicional" em que a ordem e a posição do argumento fornecido têm efeito direto no programa. Os argumentos posicionais também são obrigatórios, a menos que você mude manualmente o comportamento deles.

Para definir e analisar argumentos opcionais, você pode usar "-" (Double Dash) e alterar seus valores padrão usando o argumento "padrão".

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("-print_string", help = "imprime o argumento fornecido.", default =" uma string aleatória.")
args = analisador.parse_args ()
Imprimir (args.print_string)

Agora, quando você executa “teste.script py ”sem nenhum argumento, você deve obter“ uma string aleatória.”Como saída. Opcionalmente, você também pode usar a palavra-chave "-print_string" para imprimir qualquer string de sua escolha.

$ ./teste.py --print_string linuxhint.com Linuxhint.com

Observe que você pode tornar obrigatório um argumento opcional usando um argumento adicional "exigido = true".

Por fim, você também pode definir versões abreviadas do argumento usando "-" (single Dash) para reduzir a verbosidade.

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("-p", "--print_string", help = "imprime o argumento fornecido.", default =" uma string aleatória.")
args = analisador.parse_args ()
Imprimir (args.print_string)

Executar o seguinte comando deve lhe dar o mesmo resultado acima:

$ ./teste.py -p linuxhint.com

Exemplo 3: lidar com um argumento inteiro

Para lidar com argumentos que precisam de valores de número inteiro, você precisa definir a palavra -chave "tipo" como "int" para permitir a validação e lançar erros, caso a condição não seja atendida.

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("-p", "--print_string", help = "imprime o argumento fornecido.", tipo = int)
args = analisador.parse_args ()
Imprimir (args.print_string)

Tente executar o seguinte comando:

$ ./teste.py -p linuxhint.com

Você deve obter um erro como este:

Uso: teste.py [-h] [-p print_string]
teste.PY: Erro: argumento -p/-print_string: inválido int valor: 'linuxhint.com '

O fornecimento de um valor inteiro fornecerá o resultado correto:

$ ./teste.py -p 1000 1000

Exemplo 4: lidar com as alternativas verdadeiras e falsas

Você pode passar argumentos sem valores para tratá -los como bandeiras verdadeiras e falsas usando o argumento de "ação".

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("-p", "--print_string", help = "imprime o argumento fornecido.", Action =" store_true ")
args = analisador.parse_args ()
Imprimir (args.print_string)

Execute o comando abaixo para obter um simples "verdadeiro" como a saída:

$ ./teste.py -p

Se você executar o script sem o argumento "-p", um valor "falso" será atribuído. O valor "store_true" da palavra-chave "ação" atribui um valor "verdadeiro" à variável "print_string" sempre que o argumento "-p" é explicitamente especificado, caso contrário, false é atribuído à variável.

Exemplo 5: Trate os valores do argumento como lista

Se você deseja obter vários valores de uma só vez e armazená -los na lista, precisa fornecer palavra -chave "NARGS" no seguinte formato:

importar argparse
analisador = argparse.ArgumentParser (Descrição = 'Um programa de teste.')
analisador.add_argument ("-p", "--print_string", help = "imprime o argumento fornecido.", Nargs = '*')
args = analisador.parse_args ()
Imprimir (args.print_string)

Execute o seguinte comando para testar o código acima:

$ ./teste.py -p “a” “b”

Você deve obter alguma saída como esta:

['a', 'b']

Conclusão

O módulo "argparse" é bastante abrangente, com toneladas de opções para ajustar o comportamento dos aplicativos da linha de comando e analisar valores fornecidos pelo usuário. Esses exemplos tocam apenas o uso básico do módulo "argparse". Para aplicações avançadas e complexas, você pode precisar de implementações diferentes. Visite a documentação oficial para obter uma explicação completa do módulo.