Lo que estoy haciendo ahora es simplemente verificar la longitud de args, si es 0, decirle al usuario que escriba -h.Optparser-print Uso Ayuda cuando no se da ningún argumento
¿Hay una mejor manera de hacerlo? Gracias
Lo que estoy haciendo ahora es simplemente verificar la longitud de args, si es 0, decirle al usuario que escriba -h.Optparser-print Uso Ayuda cuando no se da ningún argumento
¿Hay una mejor manera de hacerlo? Gracias
No está claro por su pregunta si está utilizando el módulo (obsoleto) optparse o su reemplazo, el módulo argparse. Suponiendo lo último, siempre que tenga al menos un argumento posicional, su script imprimirá un mensaje de uso si no se proporcionan argumentos (o argumentos insuficientes).
Aquí es un script de ejemplo:
import argparse
parser = argparse.ArgumentParser(description="A dummy program")
parser.add_argument('positional', nargs="+", help="A positional argument")
parser.add_argument('--optional', help="An optional argument")
args = parser.parse_args()
Si me quedo esta sin argumentos, me da este resultado:
usage: script.py [-h] [--optional OPTIONAL] positional [positional ...]
script.py: error: too few arguments
Salida http://docs.python.org/library/optparse.html
Se debe hacer lo que normalmente los usuarios esperan de aplicaciones de línea de comandos - cuando se da -h
bandera, se mostrarán ayuda uso.
sólo quiero hacer mi herramienta un poco más flexible para las personas que podrían no estar familiarizados con las herramientas de línea de comandos. – thinkanotherone
Usted puede hacerlo con optparse bien. No necesita usar argparse.
if options.foo is None: # where foo is obviously your required option
parser.print_help()
sys.exit(1)
Gracias por @forkchop para la sugerencia parser.print_help() !!!
entonces creo que podría ser así?
import optparse
parser = optparse.OptionParser()
...
options, remainder = parser.parse_args()
if len(sys.argv[1:]) == 0:
print "no argument given!"
parser.print_help()
Así es como he manejado este enfoque antes:
import optparse
parser = optparse.OptionParser()
...
if len(sys.argv) == 1: # if only 1 argument, it's the script name
parser.print_help()
exit()
Estoy usando optparse – thinkanotherone
El módulo optparse fue diseñado alrededor del concepto de línea de comando _opciones_ y por lo tanto no le da mucha ayuda con argumentos posicionales o requeridos (vea la documentación vinculada a en la respuesta de divad12 - y la mía). La forma adecuada de verificar los argumentos posicionales es verificar los argumentos devueltos por 'optparse.parseargs()' que parece ser lo que ya está haciendo. – srgerg