Читать книгу El gran libro de Python - Marco Buttu - Страница 78

Paso de los argumentos desde la línea de comandos

Оглавление

Los argumentos pasados al programa desde la línea de comandos son memorizados por Python en una lista accesible mediante el módulo sys. Esta lista se denomina sys.argv y contiene, como primer elemento, el nombre del archivo y como restantes, los otros argumentos pasados desde la línea de comandos:


NOTA

El nombre argv significa argument vector y procede de C, donde se utiliza habitualmente para indicar el parámetro al cual deben asignarse los argumentos pasados desde la línea de comandos:


Los elementos de sys.argv son cadenas, por lo que es preciso convertirlos en el tipo correcto para poder utilizarlos de manera apropiada:


En nuestro script el nombre del directorio de salida se asigna con la instrucción:


La expresión condicional a la derecha del signo igual valora como expresión de prueba la fragmentación de sys.argv, precisamente sys.argv[1:]. Como ya hemos dicho, ante una lista mylist, la fragmentación mylist[i:j] devuelve una lista de los elementos de mylist a partir de aquel con el índice i y hasta aquel con el índice j exclusive. Si el índice j se omite, la fragmentación devuelve todos los elementos a partir de aquel con el índice i, hasta el final de la lista. Consideremos, por ejemplo, el siguiente script:


y lo ejecutamos dos veces. La primera vez no le pasamos ningún argumento desde la línea de comandos, mientras que la segunda le pasamos tres argumentos:


Volviendo a nuestro código, cuando pasamos a python solo el nombre del archivo, la lista sys.argv[1:] queda vacía. Puesto que una lista vacía se valora como False en una prueba de verdad:


la expresión condicional sys.argv[1] ifsys.argv[1:] else 'out' devuelve 'out' y, por tanto, se asigna out_dir_name = 'out'.

En cambio, si además del nombre del archivo se pasa un argumento posterior, entonces sys.argv[1:] no queda vacía y se valora como True. En este caso, por tanto, se asigna out_dir_name = sys.argv[1].

Si quisiéramos realizar el análisis de los argumentos pasados desde la línea de comandos, de manera que aparezcan una ayuda y un mensaje de uso, o bien que se gestionen los errores si se pasan al programa argumentos no válidos, en tal caso será necesario utilizar el módulo argparse de la librería estándar. Dicho módulo realiza el análisis de los elementos de sys.argv, genera automáticamente los mensajes de uso y también gestiona los errores. Veremos un ejemplo de uso de este módulo en el Capítulo 2.

El gran libro de Python

Подняться наверх