Miguel’s answer already gives you the way and is the simplest, most direct and immediate solution (I even suggest the accepted answer). But remember that there is also the package argparse
which is very good and allows you to build very professional solutions to handle the processing of the arguments received via command line.
An example of code that allows you to handle and receive two lists (just to illustrate, one of integer values and the other of real values) is this:
import sys
import argparse
# ---------------------------------------------
def main(args):
"""
Função de entrada.
Parâmetros
----------
args: lista de str
Argumentos recebidos da linha de comando.
Retornos
--------
exitCode: int
Código de erro/sucesso para indicação no término do programa.
"""
# Processa a linha de comando
args = parseCommandLine(args)
# Usa a linha de comando! :)
print('Valores de Uma Lista:')
for v in args.umalista:
print(v)
print('\nValores de Outra Lista:')
for v in args.outralista:
print('{:.2f}'.format(v))
return 0
# ---------------------------------------------
def parseCommandLine(args):
"""
Parseia os argumentos recebidos da linha de comando.
Parâmetros
----------
args: lista de str
Argumentos recebidos da linha de comando.
Retornos
--------
args: objeto
Objeto com os argumentos devidamente processados acessíveis em
atributos. Para mais detalhes, vide a documentação do pacote argparse.
"""
desc = 'Programa de teste para o SOPT, que ilustra a utilização do pacote '\
'argparse (para o processamento facilitado de argumentos da linha '\
'de comando).'
parser = argparse.ArgumentParser(description=desc)
hlp = 'Uma lista de valores inteiros. Deve ter no mínimo dois valores.'
parser.add_argument('-u', '--umalista', nargs='+', type=int, help=hlp)
hlp = 'Uma lista de valores reais. Deve ter no mínimo um valor.'
parser.add_argument('-o', '--outralista', nargs='+', type=float, help=hlp)
args = parser.parse_args()
if args.umalista is None or len(args.umalista) < 2:
parser.error('A opção -u/--umalista requer no mínimo 2 valores.')
if args.outralista is None or len(args.outralista) < 1:
parser.error('A opção -o/--outralista requer no mínimo 1 valor.')
return args
# ---------------------------------------------
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
That way, when running the program with nothing, you have something like this:
C:\temp\SOPT>testeSOPT
usage: testeSOPT.py [-h] [-u UMALISTA [UMALISTA ...]]
[-o OUTRALISTA [OUTRALISTA ...]]
testeSOPT.py: error: A opção -u/--umalista requer no mínimo 2 valores.
The help (when executing with the -h parameter) is:
C:\temp\SOPT>testeSOPT -h
usage: testeSOPT.py [-h] [-u UMALISTA [UMALISTA ...]]
[-o OUTRALISTA [OUTRALISTA ...]]
Programa de teste para o SOPT, que ilustra a utilização do pacote argparse
(para o processamento facilitado de argumentos da linha de comando).
optional arguments:
-h, --help show this help message and exit
-u UMALISTA [UMALISTA ...], --umalista UMALISTA [UMALISTA ...]
Uma lista de valores inteiros. Deve ter no mínimo dois
valores.
-o OUTRALISTA [OUTRALISTA ...], --outralista OUTRALISTA [OUTRALISTA ...]
Uma lista de valores reais. Deve ter no mínimo um
valor.
If you don’t provide enough items for one of the lists, you have something like:
C:\temp\SOPT>testeSOPT -u 2 4
usage: testeSOPT.py [-h] [-u UMALISTA [UMALISTA ...]]
[-o OUTRALISTA [OUTRALISTA ...]]
testeSOPT.py: error: A opção -o/--outralista requer no mínimo 1 valor.
And by providing the expected amount of values, you have:
C:\temp\SOPT>testeSOPT -u 2 4 -o 1.45 1.77 2.74 7 23
Valores de Uma Lista:
2
4
Valores de Outra Lista:
1.45
1.77
2.74
7.00
23.00
P.S.: To prevent it from using UMALISTA
as an example of data
input into help, use attribute metavar
:
. . .
hlp = 'Uma lista de valores inteiros. Deve ter no mínimo dois valores.'
parser.add_argument('-u', '--umalista', nargs='+', type=int, metavar='<número inteiro>', help=hlp)
hlp = 'Uma lista de valores reais. Deve ter no mínimo um valor.'
parser.add_argument('-o', '--outralista', nargs='+', metavar='<número real>', type=float, help=hlp)
. . .
Produces:
C:\temp\SOPT>testeSOPT -h
usage: testeSOPT.py [-h] [-u <número inteiro> [<número inteiro> ...]]
[-o <número real> [<número real> ...]]
Programa de teste para o SOPT, que ilustra a utilização do pacote argparse
(para o processamento facilitado de argumentos da linha de comando).
optional arguments:
-h, --help show this help message and exit
-u <número inteiro> [<número inteiro> ...], --umalista <número inteiro> [<número inteiro> ...]
Uma lista de valores inteiros. Deve ter no mínimo dois
valores.
-o <número real> [<número real> ...], --outralista <número real> [<número real> ...]
Uma lista de valores reais. Deve ter no mínimo um
valor.
It’s true Luiz this is also a good solution, for serious things would use it
– Miguel
Exactly, @Miguel. For quick and simple things, your solution is the best (and your answer should be accepted). :)
– Luiz Vieira