Argumentos para o script

O Python tem várias formas de gerir argumentos passados a um script. No stackoverflow indicam vários, com exemplos de utilização.

Os exemplos seguintes usam o argparse, uma biblioteca standard, e parte deles foram retirados do Argparse Tutorial.

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

No exemplo anterior, utiliza-se a configuração mínima. A classe ArgumentParser cria um parser mínimo com as funcionalidades apresentadas nas utilizações seguintes:

$ prog.py
$ prog.py --help
usage: prog.py [-h]

optional arguments:
  -h, --help  show this help message and exit
$ prog.py --verbose
usage: prog.py [-h]
prog.py: error: unrecognized arguments: --verbose
$ prog.py foo
usage: prog.py [-h]
prog.py: error: unrecognized arguments: foo

No exemplo seguinte, adiciona-se um argumento posicional, com informação para a opção de help.

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)

A função add_argument adiciona um argumento, e o parâmetro help permite adicionar informação de ajuda. Eis os resultados de utilização.

$ prog.py
usage: prog.py [-h] echo
prog.py: error: too few arguments

$ prog.py -h
usage: prog.py [-h] echo

positional arguments:
  echo        echo the string you use here

optional arguments:
  -h, --help  show this help message and exit

$ prog.py ola
ola

De seguida, apresenta-se um exemplo com um argumento numérico inteiro.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int)
args = parser.parse_args()
print(args.square**2)

E algumas utilizações desse código:

$ prog.py 5
25

$ prog.py r
usage: prog.py [-h] square
prog.py: error: argument square: invalid int value: 'r'

Um exemplo de uso de parâmetros opcionais:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbosity", help="increase output verbosity", action="store_true")
args = parser.parse_args()
if args.verbosity:
        print("verbosity turned on")

Este programa não mostra nada se não houver parâmetros. No entanto, ao passar-se o parâmetro –verbosity, imprime a frase “verbosity turned on”. O parâmetro action=”store_true” indica que se o argumento –verbosity for passado, o valor True é atribuído a args.verbose. Caso contrário é-lhe atribuído False. Ver usos abaixo:

$ prog.py

$ prog.py --verbosity
usage: prog.py [-h] [--verbosity VERBOSITY]
prog.py: error: argument --verbosity: expected one argument

$ prog.py --verbosity 1
verbosity turned on

$ prog.py -h
usage: prog.py [-h] [--verbosity VERBOSITY]

optional arguments:
  -h, --help            show this help message and exit
  --verbosity VERBOSITY
                        increase output verbosity

Por fim, um exemplo com parâmetros opcionais e valores por omissão.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("palavra", help="palavra a pesquisar nos discursos")
parser.add_argument("-c", "--componentes", type=int, default=10, help="numero de componentes")
parser.add_argument("-w", "--words", type=int, default=20, help="numero de top words a mostrar")
args = parser.parse_args()

palavra = args.palavra
n_components = args.componentes
n_top_words = args.words

print "palavra = " + palavra + ", n_components = " + str(n_components) + ", n_top_words = " + str(n_top_words)

E alguns usos:

$ prog.py xpto
palavra = xpto, n_components = 10, n_top_words = 20

$ prog.py xpto -c 12
palavra = xpto, n_components = 12, n_top_words = 20

$ prog.py xpto -c 12 -w 25
palavra = xpto, n_components = 12, n_top_words = 25

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *