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:
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
args = parser.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 valores de argumento de linha de comando em tipos de dados compreendidos por Python. Isso é feito pelo método “parse_args” do objeto ArgumentParser, conforme mostrado na última instrução.
Supondo que você salvou o código de amostra declarado acima em um arquivo chamado “teste.py ”, executar os comandos abaixo o levará a mensagens de ajuda relacionadas ao programa.
$ ./teste.py -h$ ./teste.py --help
Você deve obter alguma saída semelhante a esta:
uso: teste.py [-h]Argumentos opcionais de um programa de teste:
-h, --help mostra esta mensagem de ajuda e sai
Observe que nenhuma lógica para lidar com 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 lidar com valores de argumentos analisados em seu programa, as mensagens de ajuda começarão a mostrar descrições 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 argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument ("print_string", help = "Imprime o argumento fornecido.")
args = parser.parse_args ()
imprimir (args.print_string)
Uma nova declaraçã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 aos argumentos adicionados, a menos que seja substituído.
Mais uma vez, dê uma olhada na mensagem de ajuda:
uso: teste.py [-h] [print_string]Argumentos posicionais de um programa de teste:
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 um efeito direto no programa. Os argumentos posicionais também são obrigatórios, a menos que você altere manualmente o 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”.
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument ("- print_string", help = "Imprime o argumento fornecido.", default =” Uma string aleatória.”)
args = parser.parse_args ()
imprimir (args.print_string)
Agora, quando você executa o “teste.py ”script 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.com
Observe que você pode tornar um argumento opcional obrigatório usando um argumento adicional “obrigatório = verdadeiro”.
Por último, você também pode definir versões abreviadas do argumento usando “-” (um único traço) para reduzir o detalhamento.
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument (“- p”, "--print_string", help = "Imprime o argumento fornecido.", default =” Uma string aleatória.”)
args = parser.parse_args ()
imprimir (args.print_string)
Executar o seguinte comando deve fornecer 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.
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument ("- p", "--print_string", help = "Imprime o argumento fornecido.", tipo = int)
args = parser.parse_args ()
imprimir (args.print_string)
Tente executar o seguinte comando:
$ ./teste.py -p LinuxHint.comVocê deve obter um erro como este:
uso: teste.py [-h] [-p PRINT_STRING]teste.py: erro: argumento -p / - print_string: valor int inválido: 'LinuxHint.com '
Fornecer um valor inteiro fornecerá o resultado correto:
$ ./teste.py -p 1000 1000Exemplo 4: lidar com alternâncias verdadeiro e falso
Você pode passar argumentos sem quaisquer valores para tratá-los como sinalizadores True e False usando o argumento “action”.
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument ("- p", "--print_string", help = "Imprime o argumento fornecido.", ação =" store_true ")
args = parser.parse_args ()
imprimir (args.print_string)
Execute o comando abaixo para obter um simples “True” como saída:
$ ./teste.py -pSe você executar o script sem o argumento “-p”, um valor “False” será atribuído em seu lugar. 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, você precisa fornecer a palavra-chave “nargs” no seguinte formato:
importar argparseparser = argparse.ArgumentParser (description = 'Um programa de teste.')
analisador.add_argument ("- p", "--print_string", help = "Imprime o argumento fornecido.", nargs = '*')
args = parser.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 de aplicativos de linha de comando e analisar 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.