programa - ¿Cómo accedo a los argumentos de la línea de comandos en Python?
ejecutar python en linux (7)
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.
Algunas cosas adicionales que puedo pensar.
Como @allsyed dijo sys.argv proporciona una lista de componentes (incluido el nombre del programa), por lo que 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
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.
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 entrada 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
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.
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)