2011-01-04 14 views
10

¿Es posible hacer una opción en optparse obligatoria?¿Es posible hacer una opción en optparse obligatoria?

+0

Sí, es posible. Consulte la respuesta a esta pregunta aquí (http://stackoverflow.com/questions/4407539/) – user225312

+3

Sí, pero no debe hacer eso, porque eso va en contra de la convención y el estándar de la interfaz de línea de comando. Hay una razón por la cual las opciones no pueden hacerse obligatorias. Lea los documentos 'optparse', se indica claramente allí. – gruszczy

+4

Bien, entonces ¿por qué ese 'argparse' permite las opciones requeridas? Para citar, 'argparse' documentos:' Optparse se niega a admitir estas características, prefiriendo la pureza a la practicidad. – user225312

Respuesta

20

me publicó un comentario anterior, pero teniendo en cuenta que muchas otras respuestas dicen No, not possible, aquí es cómo hacerlo:

parser = OptionParser(usage='usage: %prog [options] arguments') 
parser.add_option('-f', '--file', 
         dest='filename', 
         help='foo help') 
(options, args) = parser.parse_args() 
if options.filename is None: # if filename is not given 
    parser.error('Filename not given') 

Esto hace que el -f como obligatorios.

Usar argparse es una alternativa de hecho, pero eso no significa que no pueda hacer esto también en optparse.

+2

Bien, esto es lo que quise decir con (- optparse establecerlo en algunos valores predeterminados como Ninguno y comprobar si no ninguno), creo que debería haber proporcionado un ejemplo. Gracias. Por cierto, esto no lo hace optparse, lo estás haciendo al buscar el valor de la opción en el programa. –

+1

De hecho, 'optparse' no tiene ninguna función, esta es solo una forma de hacer una opción requerida. – user225312

8

opción es por defeinition opcional :-) Si necesita hacer algo obligatorio, use argparse y establezca un argumento posicional.

http://docs.python.org/dev/library/argparse.html

+1

gracias, sin embargo, necesito que funcione bajo py 2.6. – Alex

+0

Puede instalar argparse por separado. http://code.google.com/p/argparse/ Luego, al actualizar Python, puedes migrar sin problemas. – gruszczy

2

No, no se puede. O puede usar argparse y/o obtiene el valor de la opción de usar el módulo optparse y verifica explícitamente si el valor de la opción está definido (como en la opción optparse configúrelo en algunos valores predeterminados como Ninguno y compruebe si no) y si no está definido, llame al sys.exit() solicitando a los usuarios que brinden esa opción.

+2

Es posible. – user225312

Cuestiones relacionadas