Mr Miguel's answer already gives you the path and is the simplest, direct and immediate solution (I even suggest that it is the accepted answer). But keep in mind that there is also the argparse
package that is very good and allows you build very professional solutions to handle the processing of arguments received via the command line.
An example code that allows you to treat and receive two lists (just to illustrate one of integer values and one 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 executed 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 do not provide enough items for one of the lists, there is 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, 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
Q.: To prevent it from using UMALISTA
plus as an example of data
to use the metavar
attribute:
. . .
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)
. . .
Produce:
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.