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