Pergunta

Eu tenho uma função:

def x(a,b,c)

Como posso coletar valores de variáveis ​​da linha de comando que se enquadram nesse padrão?

python test.py --x_center a --y_center b c (c tem, por exemplo, 3, 4 ou mais valores)

Foi útil?

Solução

Você pode fazer algo assim:

import argparse

def x(x_center, y_center, values):
    print "X center:", x_center
    print "Y center:", y_center
    print "Values:", values

def main():
    parser = argparse.ArgumentParser(description="Do something.")
    parser.add_argument('-x', '--x-center', type=float, required=True)
    parser.add_argument('-y', '--y-center', type=float, required=True)
    parser.add_argument('values', type=float, nargs='*')
    args = parser.parse_args()

    x(args.x_center, args.y_center, args.values)

if __name__ == '__main__':
    main()

Experimente:

$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]

Usar o argparse módulo, normalmente você desejará começar com um main função (e algum padrão que a chama).No main função, você vai querer criar um ArgumentParser.Depois disso, você desejará adicionar alguns argumentos.

Para adicionar um argumento, você usa add_argument.

parser.add_argument('-x', '--x-center', type=float, required=True)

Aqui, estamos adicionando uma opção, -x, que também tem uma variante de opção longa, --x-center.O type nós passamos para add_argument diz para exigir que seja um float (e erro se não for um float válido).Também contamos argparse que é necessário;se não for fornecido, erro.

parser.add_argument('values', type=float, nargs='*')

É como antes, mas como a string que passamos para ele não começa com um travessão, ele assume que não é uma opção, mas sim um argumento de não opção.Mais uma vez, dizemos que queremos floatS. nargs permite que você especifique que é necessário mais de um argumento. * especifica que queremos qualquer quantidade de argumentos.

Finalmente, analisamos a linha de comando com parse_args.Isso retorna um objeto que armazenaremos.

Você pode então acessar as opções e argumentos nesse args objeto e faça coisas relevantes em seu programa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top