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.
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