Uso python para crear la 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 son de entrada.
python
command-line
ParisNakitaKejser
fuente
fuente
Respuestas:
El tutorial de Python lo explica :
Más específicamente, si ejecuta
python example.py one two three
:fuente
le dará una lista de argumentos (sin incluir el nombre del archivo python)
fuente
[1:]
significa[1:]
hacia arriba porque el primer argumento desys.argv
es, por defecto, el nombre del archivo python que está ejecutando, por ejemplotestrun.py
.Recomiendo altamente lo
argparse
que viene con Python 2.7 y versiones posteriores.El
argparse
módulo reduce el código de la placa de la caldera y hace que su código sea más robusto, porque el módulo maneja todos los casos de uso estándar (incluidos los subcomandos), genera la ayuda y el uso para usted, verifica y desinfecta la entrada del usuario, todo lo que debe preocupar cuando Están utilizando elsys.argv
enfoque. Y es gratis (incorporado).Aquí un pequeño ejemplo:
y la salida para
python prog.py -h
y
python prog.py 1
como es de esperar:fuente
parser.add_argument('var3', nargs='?', type=int, default=3)
var3 es un parámetro opcional, si no especifica un valor en la línea de comando puede acceder a var3 en su código, valor predeterminado para var3 = 3Código de Python:
Invocación:
Salida:
fuente
Puede usar
sys.argv
para obtener los argumentos como una lista.Si necesita acceder a elementos individuales, puede usar
donde
i
está index,0
le dará el nombre de archivo python que se está ejecutando. Cualquier índice después de eso son los argumentos pasados.fuente
Si lo llamas así:
$ python myfile.py var1 var2 var3
Similar a las matrices que también tiene,
sys.argv[0]
que siempre es el directorio de trabajo actual.fuente
sys.argv[0]
no es el directorio de trabajo actual. Es el nombre del archivo que se está ejecutando.Algunas cosas adicionales que se me ocurren.
Como @allsyed dijo, sys.argv proporciona una lista de componentes (incluido el nombre del programa), por lo que si desea conocer la cantidad de elementos que se pasan a través de la línea de comando, 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 está buscando una mejor manera de manejar los argumentos de la línea de comandos, le sugiero que consulte https://docs.python.org/2/howto/argparse.html
fuente