O módulo argparse do Python é uma ferramenta poderosa para construir interfaces de linha de comando fáceis de usar. Esteja você desenvolvendo scripts simples ou aplicativos complexos, saber como usar o argparse de maneira eficaz pode melhorar significativamente a usabilidade de seus programas. Nesta postagem, explicarei tudo o que você precisa saber para dominar o argparse - desde a análise básica de argumentos até recursos avançados e práticas recomendadas.
O módulo argparse fornece uma maneira simples de lidar com argumentos de linha de comando passados para seu script Python. Ele gera automaticamente mensagens de ajuda, lida com a verificação de tipo e pode processar argumentos opcionais e posicionais.
Por que usar argparse?
Vamos começar com o básico!
Para começar a usar argparse, primeiro você precisa importar o módulo e criar um objeto ArgumentParser:
import argparse parser = argparse.ArgumentParser(description="Demo script for argparse.")
O argumento de descrição aqui é opcional e ajuda a explicar o propósito do seu script. Ele aparece quando os usuários executam o comando --help.
Argumentos posicionais são o tipo mais básico de argumento em argparse. Eles são obrigatórios e devem aparecer no comando na ordem correta.
parser.add_argument("name", help="Your name") args = parser.parse_args() print(f"Hello, {args.name}!")
Executando o script:
$ python script.py Alice Hello, Alice!
Se você não fornecer o argumento name, argparse gerará um erro:
$ python script.py usage: script.py [-h] name script.py: error: the following arguments are required: name
Argumentos opcionais, como o nome sugere, não são obrigatórios. Normalmente começam com um ou dois travessões (- ou --) para distingui-los dos argumentos posicionais.
parser.add_argument("-g", "--greeting", help="Custom greeting message", default="Hello") args = parser.parse_args() print(f"{args.greeting}, {args.name}!")
Executando o script:
$ python script.py Alice --greeting Hi Hi, Alice!
O argumento padrão garante que um valor padrão seja usado se o usuário não fornecer a opção:
$ python script.py Alice Hello, Alice!
Por padrão, todos os argumentos são tratados como strings. Mas você pode especificar o tipo de argumento que espera. Por exemplo, se você precisar de um número inteiro:
parser.add_argument("age", type=int, help="Your age") args = parser.parse_args() print(f"{args.name} is {args.age} years old.")
Executando o script:
$ python script.py Alice 25 Alice is 25 years old.
Se você fornecer um tipo inválido (por exemplo, uma string onde um número inteiro é esperado), argparse mostrará automaticamente um erro:
$ python script.py Alice twenty-five usage: script.py [-h] name age script.py: error: argument age: invalid int value: 'twenty-five'
Argumentos de sinalização são úteis para ativar ou desativar determinados recursos. Eles não assumem um valor, mas atuam como interruptores. Use a opção action="store_true" para criar uma sinalização.
parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose mode") args = parser.parse_args() if args.verbose: print("Verbose mode is on.")
Executando o script:
$ python script.py Alice -v Verbose mode is on.
Se você não fornecer o sinalizador, o valor padrão False será usado:
$ python script.py Alice
argparse permite definir nomes de opções curtos e longos para o mesmo argumento. Por exemplo:
parser.add_argument("-g", "--greeting", help="Custom greeting message")
Você pode usar a versão curta (-g) ou a versão longa (--greeting):
$ python script.py Alice -g Hi Hi, Alice!
$ python script.py Alice --greeting Hi Hi, Alice!
Em alguns casos, você pode querer definir valores padrão para seus argumentos opcionais. Isso garante que seu programa se comporte corretamente mesmo quando falta um argumento.
parser.add_argument("-g", "--greeting", default="Hello", help="Greeting message") args = parser.parse_args() print(f"{args.greeting}, {args.name}!")
Você também pode especificar argumentos que aceitam vários valores usando nargs. Por exemplo, para aceitar vários nomes de arquivo:
parser.add_argument("files", nargs=" ", help="List of file names") args = parser.parse_args() print(f"Files to process: {args.files}")
Executando o script:
$ python script.py file1.txt file2.txt file3.txt Files to process: ['file1.txt', 'file2.txt', 'file3.txt']
Você pode restringir os valores possíveis de um argumento usando a opção de escolhas:
parser.add_argument("--format", choices=["json", "xml"], help="Output format") args = parser.parse_args() print(f"Output format: {args.format}")
Executando o script:
$ python script.py Alice --format json Output format: json
Se o usuário fornecer uma escolha inválida, argparse gerará um erro:
$ python script.py Alice --format csv usage: script.py [-h] [--format {json,xml}] name script.py: error: argument --format: invalid choice: 'csv' (choose from 'json', 'xml')
Você pode misturar e combinar argumentos posicionais e opcionais no mesmo script.
parser.add_argument("name", help="Your name") parser.add_argument("--greeting", help="Custom greeting", default="Hello") parser.add_argument("--verbose", action="store_true", help="Enable verbose output") args = parser.parse_args() if args.verbose: print(f"Running in verbose mode...") print(f"{args.greeting}, {args.name}!")
Um dos maiores pontos fortes do argparse é seu gerador de mensagens de ajuda integrado. Quando um usuário executa seu script com o sinalizador -h ou --help, argparse exibirá automaticamente os argumentos e suas descrições.
$ python script.py -h usage: script.py [-h] [--greeting GREETING] [--verbose] name Demo script for argparse. positional arguments: name Your name optional arguments: -h, --help show this help message and exit --greeting GREETING Custom greeting --verbose Enable verbose output
Se o seu script tiver vários subcomandos (por exemplo, git commit, git push), você poderá usar subanalisadores para lidar com eles.
parser = argparse.ArgumentParser(description="Git-like command-line tool") subparsers = parser.add_subparsers(dest="command") # Add "commit" subcommand commit_parser = subparsers.add_parser("commit", help="Record changes to the repository") commit_parser.add_argument("-m", "--message", help="Commit message", required=True) # Add "push" subcommand push_parser = subparsers.add_parser("push", help="Update remote refs") args = parser.parse_args() if args.command == "commit": print(f"Committing changes with message: {args.message}") elif args.command == "push": print("Pushing changes to remote repository.")
Aqui estão algumas práticas recomendadas a serem consideradas ao usar argparse:
O módulo argparse é essencial para escrever scripts Python profissionais e fáceis de usar. Ao aproveitar seus recursos como argumentos posicionais e opcionais, verificação de tipo e subanalisadores, você pode criar interfaces de linha de comando intuitivas e poderosas.
Na próxima vez que você criar um script Python, considere usar argparse para torná-lo mais flexível e acessível. Boa codificação!
Sinta-se à vontade para entrar em contato comigo se tiver dúvidas ou sugestões. Conecte-se comigo em:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3