2011-11-15 9 views

Respuesta

4

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 
+0

Estoy usando optparse – thinkanotherone

+0

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

1

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.

+0

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

14

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) 
4

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() 
2

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() 
Cuestiones relacionadas