script passing pass parameter example python arguments parameter-passing

passing - argumento vacío python



python sys arguments (8)

¿Cómo imprimo información de ayuda si no se pasan argumentos al script de Python?

#!/usr/bin/env python import sys for arg in sys.argv: if arg == "do": do this if arg == "" print "usage is bla bla bla"

lo que me falta es if arg == "" línea que no sé cómo expresar :(


Basado en la respuesta de Noctis Skytower.

import sys args = sys.argv[1:] for arg in args: if arg == "do": # do this if not args: print "usage is bla bla bla"


Como han dicho otros, puede verificar si se ha pasado algún argumento haciendo:

#!/usr/bin/env python import sys args = sys.argv[1:] if args: for arg in args: if arg == "do": # do this else: print "usage is bla bla bla"

Sin embargo, hay un módulo de Python llamado OptParse que se desarrolló explícitamente para analizar los argumentos de la línea de comandos cuando se ejecuta un script. Yo sugeriría analizar esto, ya que es un poco más "compatible con los estándares" (como en, es el método esperado y aceptado de análisis de línea de comando dentro de la comunidad Python).


La siguiente es una forma muy pitónica de resolver su problema, porque genera deliberadamente una excepción en el intento ... excepto:

import sys try: sys.argv[1:] // do something with sys.argv[1:] except IndexError: print "usage is..." sys.exit()


Te recomiendo que uses el lib optparse [1], es más elegante: D

[1] Analizador de opciones de línea de comando más potente < OptParse >


#!/usr/bin/env python import sys args = sys.argv[1:] if args: for arg in args: if arg == "do": # do this else: print "usage is bla bla bla"


if len(sys.argv)<2:

El nombre del programa siempre está en sys.argv [0]


if len(sys.argv) == 1: # Print usage...

El primer elemento de sys.argv es siempre el nombre del script en sí, o una cadena vacía. Si sys.argv tiene solo un elemento, entonces no debe haber argumentos.

http://docs.python.org/library/sys.html#sys.argv


import argparse def parse_args(): parser = argparse.ArgumentParser( add_help=True, ) # your arguments here if len(sys.argv) == 1: parser.print_help() sys.exit(0) else: options = parser.parse_args() return options