Pregunta

Tengo una función:

def x(a,b,c)

¿Cómo puedo recoger los valores de variables desde la línea de comandos que se ajustan a este patrón?

python test.py --x_center a --y_center b c (c tiene, por ejemplo, 3, 4 o más valores)

¿Fue útil?

Solución

Puede hacer algo así como esto:

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()

Pruébelo:

$ 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]

Para usar la argparse módulo , podrás normalmente desea comenzar con una función main (y algo repetitivo que llama). En la función main, usted querrá crear una ArgumentParser . Después de eso, tendrá que añadir algunos argumentos.

Para añadir un argumento, se utiliza add_argument .

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

A continuación, vamos a añadir una opción, -x, que también tiene una variante opción larga, --x-center. El type pasamos a add_argument le dice que lo requieran ser un float (y error si no es un flotador válida). También les decimos argparse que se requiere; si no se proporciona, de error.

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

Esto es igual que antes, pero ya que la cadena se pasa a ella no comienza con un guión, se supone que no es una opción, sino más bien un argumento que no es opción. Una vez más, le decimos que queremos floats. nargs le permite especificar que se necesita más de un argumento. Especifica * que queremos cualquier cantidad de argumentos.

Por último, analizar la línea de comandos con parse_args . Esto devuelve un objeto que vamos a almacenar.

A continuación, puede acceder a las opciones y argumentos sobre ese objeto args y hacer cosas relevantes en su programa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top