Se você desenvolveu um script Python ou aplicativo destinado a ser executado principalmente em emuladores de terminal ou até mesmo em aplicativos GUI, adicionar argumentos de linha de comando pode melhorar sua usabilidade, legibilidade do código, estrutura do aplicativo e facilidade de uso geral do aplicativo para os usuários finais. Esses argumentos de linha de comando também são chamados de opções ou opções e funcionam de maneira semelhante aos argumentos que você geralmente vê em scripts bash e outros programas baseados em C / C ++.
Para adicionar argumentos aos scripts Python, você terá que usar um módulo integrado chamado argparse. Como o nome sugere, ele analisa os argumentos da linha de comando usados ao iniciar um script ou aplicativo Python. Esses argumentos analisados também são verificados pelo módulo argparse para garantir que sejam do tipo adequado. Erros são gerados se houver valores inválidos nos argumentos.
O uso do módulo argparse pode ser melhor compreendido por meio de exemplos. Abaixo estão alguns exemplos de código que irão ajudá-lo a começar com o módulo argparse.
Exemplo 1: Gerar argumento e mensagem de ajuda
Considere o exemplo de código abaixo:
importarargparse
analisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
args= analisador.parse_args()
A primeira instrução importa o módulo argparse. A seguir, 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 os valores dos argumentos da linha de comando em tipos de dados compreendidos pelo Python. Isso é feito pelo método parse_args do objeto ArgumentParser, conforme mostrado na última instrução.
Supondo que você salvou o exemplo de código declarado acima em um arquivo denominado test.py, a execução dos comandos a seguir obterá mensagens de ajuda relacionadas ao programa.
$ ./teste.py-h$ ./teste.py-ajuda
Você deve obter alguma saída semelhante a esta:
uso: test.py [-h]
Um programa de teste.
argumentos opcionais:
-h, --help mostra esta mensagem de ajuda e sai
Observe que nenhuma lógica para manipular argumentos analisados e convertê-los em objetos foi adicionada ao exemplo de código mencionado acima. Portanto, as mensagens de ajuda para argumentos individuais não são mostradas na saída. Depois de adicionar lógica para manipular valores de argumentos analisados em seu programa, as mensagens de ajuda começarão a mostrar a descrição de argumentos individuais.
Exemplo 2: lidar com um argumento de string
Para adicionar argumentos aceitáveis por seu script python, você precisa usar o método add_argument. Dê uma olhada no seguinte código:
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument('print_string', ajuda='Imprime o argumento fornecido.')
args= analisador.parse_args()
imprimir(args.print_string)
Uma nova instrução foi adicionada mostrando o uso do método add_argument. Qualquer argumento adicionado ao iniciar 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 de argumentos como strings, então você não precisa especificar explicitamente o tipo neste caso. Um valor padrão de Nenhum também é atribuído a argumentos adicionados, a menos que seja substituído.
Mais uma vez, dê uma olhada na mensagem de ajuda:
uso: test.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 sai
Uma das linhas na saída diz argumentos posicionais. Uma vez que nenhuma palavra-chave para o argumento é definida, atualmente o argumento é tratado como um argumento posicional, onde 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ê altere manualmente seu comportamento.
Para definir e analisar argumentos opcionais, você pode usar - (traço duplo) e alterar seus valores padrão usando o argumento padrão.
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument('--print_string', ajuda='Imprime o argumento fornecido.',predefinição=PARAaleatória fragmento.)
args= analisador.parse_args()
imprimir(args.print_string)
Agora, ao executar o script test.py sem nenhum argumento, você deve obter uma string aleatória. como saída. Você também pode usar opcionalmente a palavra-chave –print_string para imprimir qualquer string de sua escolha.
$ ./teste.py--print_string LinuxHint.comLinuxHint.comObserve que você pode tornar um argumento opcional obrigatório usando um argumento adicional required = True.
Por último, você também pode definir versões abreviadas do argumento usando - (traço único) para reduzir o detalhamento.
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument(-p, '--print_string', ajuda='Imprime o argumento fornecido.',predefinição=PARAaleatória fragmento.)
args= analisador.parse_args()
imprimir(args.print_string)
Executar o seguinte comando deve dar a você o mesmo resultado acima:
$ ./teste.py-p LinuxHint.comExemplo 3: lidar com um argumento inteiro
Para lidar com argumentos que precisam de valores inteiros, você precisa definir a palavra-chave type como int para permitir a validação e lançar erros caso a condição não seja atendida.
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument('-p', '--print_string', ajuda='Imprime o argumento fornecido.', modelo=int)
args= analisador.parse_args()
imprimir(args.print_string)
Tente executar o seguinte comando:
$ ./teste.py-p LinuxHint.comVocê deve obter um erro como este:
uso: test.py [-h] [-p PRINT_STRING]test.py: erro: argumento -p / - print_string: valor int inválido: 'LinuxHint.com'
Fornecer um valor inteiro fornecerá o resultado correto:
$ ./teste.py-p10001000Exemplo 4: lidar com alternâncias verdadeiro e falso
Você pode passar argumentos sem nenhum valor para tratá-los como sinalizadores True e False usando o argumento de ação.
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument('-p', '--print_string', ajuda='Imprime o argumento fornecido.',açao='store_true')
args= analisador.parse_args()
imprimir(args.print_string)
Execute o comando abaixo para obter um True simples como saída:
$ ./teste.py-pSe você executar o script sem o argumento -p, um valor False será atribuído. O valor store_true da palavra-chave action atribui um valor True à variável print_string sempre que o argumento -p é explicitamente especificado, caso contrário, False é atribuído à variável.
Exemplo 5: tratar valores de argumento como lista
Se você deseja obter vários valores de uma vez e armazená-los na lista, é necessário fornecer a palavra-chave nargs no seguinte formato:
importarargparseanalisador =argparse.ArgumentParser(Descrição='Um programa de teste.')
analisador.add_argument('-p', '--print_string', ajuda='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 bVocê 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 de linha de comando e analisar os valores fornecidos pelo usuário. Esses exemplos tocam apenas no uso básico do módulo argparse. Para aplicativos avançados e complexos, você pode precisar de implementações diferentes. Visite a documentação oficial para uma explicação completa do módulo.