Interfaces de linha de comando (CLIs) são uma das maneiras mais rápidas e eficazes de interagir com softwares. Elas permitem que você execute comandos diretamente, resultando em processamento mais rápido e recursos avançados. Desenvolvedores frequentemente criam CLIs em Python para diversas aplicações, utilitários e scripts de automação — permitindo processar dinamicamente a entrada do usuário. É aqui que entra o módulo argparse do Python.
O módulo argparse simplifica o processamento de argumentos da linha de comando, permitindo que desenvolvedores criem ferramentas interativas e fáceis de usar. Como parte da biblioteca padrão, ele permite definir, processar e validar entradas sem a necessidade de uma lógica complexa.
Neste artigo, abordaremos os conceitos principais, exemplos úteis e recursos avançados do módulo argparse, para que você possa começar a construir ferramentas de linha de comando robustas imediatamente.
Importe o módulo no seu script Python:
import argparse
Isso habilita o parsing de argumentos .py a partir da linha de comando.
A classe ArgumentParser é a classe principal da API do módulo argparse. Para usá-la, comece criando uma instância:
parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.")
Aqui:
description descreve a função do programa e será exibida quando alguém executar --help.
Defina os parâmetros que seu programa aceitará usando add_argument():
parser.add_argument('filename', type=str, help="Name of the file to process")
parser.add_argument('--verbose', action='store_true', help="Enable verbose mode")
Explicação:
filename é obrigatório.
--verbose é opcional e ativa o modo verboso.
Use parse_args() para processar os argumentos fornecidos:
args = parser.parse_args()
Isso armazena os valores como atributos do objeto args.
Exemplo:
print(f"File to process: {args.filename}")
if args.verbose:
print("Verbose mode enabled")
else:
print("Verbose mode disabled")
python3 file.py example.txt
python3 file.py example.txt --verbose
python3 file.py --help
Em alguns casos, argumentos opcionais precisam de valores pré-definidos. Neste exemplo, --timeout recebe um valor padrão de 30 segundos:
import argparse
parser = argparse.ArgumentParser(description="Demonstrating default argument values.")
parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)")
args = parser.parse_args()
print(f"Timeout value: {args.timeout} seconds")
Explicação
Importação do módulo
Criação do ArgumentParser
Adição do argumento --timeout com valor padrão
Parsing com parse_args()
Caso 1: valor padrão usado
python file.py
Caso 2: valor personalizado
python file.py --timeout 60
O parâmetro choices permite restringir um argumento a um conjunto de valores válidos:
parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation")
Caso 1: valor válido
python3 file.py --mode basic
Caso 2: sem entrada
python3 file.py
Caso 3: valor inválido
python3 file.py --mode intermediate
Use nargs='+' para permitir múltiplos valores em um único argumento:
parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process")
Caso 1: múltiplos números
python3 file.py --numbers 10 20 30
Caso 2: um número
python3 file.py --numbers 5
Caso 3: sem entrada
python3 file.py
Caso 4: entrada inválida
python3 file.py --numbers 10 abc 20
Embora argumentos com -- sejam opcionais por padrão, você pode torná-los obrigatórios com required=True:
parser.add_argument('--config', required=True, help="Path to the configuration file")
Caso 1: entrada válida
python3 file.py --config settings.json
Caso 2: argumento obrigatório ausente
python3 file.py
parser.add_argument('--debug', action='store_true', help="Enable debugging mode")
group = parser.add_argument_group('File Operations')
group.add_argument('--input', type=str, help="Input file")
group.add_argument('--output', type=str, help="Output file")
group = parser.add_mutually_exclusive_group()
group.add_argument('--json', action='store_true', help="Output in JSON format")
group.add_argument('--xml', action='store_true', help="Output in XML format")
O módulo argparse facilita a criação de CLIs robustos para manipular argumentos da linha de comando em Python. Desde opções simples até recursos avançados como choices e nargs, desenvolvedores podem criar ferramentas práticas, confiáveis e amigáveis ao usuário. Nomear argumentos de forma clara e escrever boas descrições torna seus scripts mais compreensíveis e fáceis de manter.