¿Cómo accedo a los argumentos de la línea de comandos en Python?

Utilizo python para crear la configuración de configuración de mi proyecto, pero necesito ayuda para obtener los argumentos de la línea de comandos.

Intenté esto en la terminal:

$python myfile.py var1 var2 var3 

En mi archivo Python, quiero usar todas las variables que se ingresan.

El tutorial de Python lo explica :

 import sys print(sys.argv) 

Más específicamente, si ejecuta python example.py one two three :

 >>> import sys >>> print(sys.argv) ['example.py', 'one', 'two', 'three'] 
 import sys sys.argv[1:] 

le dará una lista de argumentos (sin incluir el nombre del archivo python)

Recomiendo altamente argparse que viene con Python 2.7 y argparse posteriores.

El módulo argparse reduce el código de la placa de la caldera y hace que su código sea más robusto, ya que el módulo maneja todos los casos de uso estándar (incluidos los subcomandos), genera la ayuda y el uso para usted, verifica y sanea la información del usuario, todo lo que debe preocuparle cuando Usted está utilizando el enfoque sys.argv . Y es gratis (incorporado).

Aquí un pequeño ejemplo:

 import argparse parser = argparse.ArgumentParser("simple_example") parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int) args = parser.parse_args() print(args.counter + 1) 

y la salida para python prog.py -h

 usage: simple_example [-h] counter positional arguments: counter counter will be increased by 1 and printed. optional arguments: -h, --help show this help message and exit 

y para python prog.py 1 como es de esperar:

 2 

Código Python:

 import sys # main param_1= sys.argv[1] param_2= sys.argv[2] param_3= sys.argv[3] print 'Params=', param_1, param_2, param_3 

Invocación:

 $python myfile.py var1 var2 var3 

Salida:

 Params= var1 var2 var3 

Puede usar sys.argv para obtener los argumentos como una lista.

Si necesita acceder a elementos individuales, puede utilizar

 sys.argv[i] 

donde i es índice, 0 le dará el nombre de archivo de python que se está ejecutando. Cualquier índice después de eso son los argumentos pasados.

Si lo llama así: $ python myfile.py var1 var2 var3

 import sys var1 = sys.argv[1] var2 = sys.argv[2] var3 = sys.argv[3] 

Similar a las matrices, también tiene sys.argv[0] que es siempre el directorio de trabajo actual.

Algunas cosas adicionales que puedo pensar.

Como @allsyed dijo sys.argv proporciona una lista de componentes (incluido el nombre del progtwig), por lo tanto, si desea saber la cantidad de elementos que pasan a través de la línea de comandos, puede usar len () para determinarlo. En base a esto, puede diseñar mensajes de excepción / error si el usuario no pasó un número específico de parámetros.

Además, si busca una mejor manera de manejar los argumentos de la línea de comandos, le sugeriría que visite https://docs.python.org/2/howto/argparse.html