¿Cómo comprobar si se ha establecido un argumento desde la línea de comandos?

Puedo llamar mi guión así:

python D:\myscript.py 60 

Y en el guión puedo hacer:

 arg = sys.argv[1] foo(arg) 

Pero, ¿cómo puedo probar si el argumento se ha introducido en la llamada de la línea de comandos? Necesito hacer algo como esto:

 if isset(sys.argv[1]): foo(sys.argv[1]) else: print "You must set argument!!!" 

No use sys.argv para manejar la interfaz de línea de comandos; Hay un módulo para hacer eso: argparse .

Puede marcar un argumento según sea necesario al pasar required=True a add_argument .

 import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument("foo", ..., required=True) parser.parse_args() 

len(sys.argv) > 1

 if len(sys.argv) < 2: print "You must set argument!!!" 

Si está utilizando Python 2.7 / 3.2, use el módulo argparse . De lo contrario, utilice el módulo optparse . El módulo se encarga de analizar la línea de comandos y puede verificar si el número de argumentos posicionales coincide con lo que espera.

 if len(sys.argv) == 1: print('no arguments passed') sys.exit() 

Esto comprobará si los argumentos fueron pasados ​​en absoluto. Si no hay argumentos, saldrá de la secuencia de comandos, sin ejecutar el rest.

 for arg in sys.argv: print (arg) #print cli arguments 

Puedes usarlo para almacenar el argumento en la lista y usarlo. Es una forma más segura que usarlos como este sys.argv[n]

No hay problemas si no se dan argumentos

Utilizo el módulo optparse para esto, pero supongo que porque estoy usando 2.5, puedes usar argparse como sugirió Alex si estás usando 2.7 o más

if(sys.argv[1]): debería funcionar bien, si no hay argumentos, sys.argv [1] será (debería ser) nulo