¿Es posible hacer una opción en optparse obligatoria?¿Es posible hacer una opción en optparse obligatoria?
Respuesta
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
.
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. –
De hecho, 'optparse' no tiene ninguna función, esta es solo una forma de hacer una opción requerida. – user225312
opción es por defeinition opcional :-) Si necesita hacer algo obligatorio, use argparse
y establezca un argumento posicional.
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.
Es posible. – user225312
- 1. boost :: program_options - ¿Es posible hacer cumplir la bandera obligatoria?
- 2. ¿Procesar valores múltiples para una sola opción usando getopt/optparse?
- 3. Lista Optparse de Python
- 4. ¿Es posible hacer que una casilla de verificación/botón de opción no sea verificable?
- 5. ¿Es posible hacer una reducción en una matriz con openmp?
- 6. ¿Puede el optparse de Python mostrar el valor predeterminado de una opción?
- 7. Python optparse y espacios en un argumento
- 8. Python optparse valores de instancia
- 9. ¿Es posible hacer ".value + =" en JQuery?
- 10. ¿Es posible hacer lo siguiente en una instrucción Switch - C++?
- 11. ¿Es posible hacer una copia masiva en mysql
- 12. es posible hacer dos claves principales en una tabla
- 13. ¿Es posible hacer una inicialización estática de mutexes en Windows?
- 14. ¿Es posible hacer una solicitud POST en Flask?
- 15. Opciones booleanas negativas --no-whatever en optparse?
- 16. Android: ¿Es posible hacer una copia de una Vista?
- 17. Cómo hacer una falsa opción por defecto
- 18. ¿Es obligatoria la configuración de restricción de seguridad para Tomcat?
- 19. ¿Es posible hacer que ActiveRecord cree objetos para filas cargadas usando la opción: joins?
- 20. python - beginner - integrando optparse en un programa
- 21. Con el módulo optparse de Python, ¿cómo se crea una opción que toma una cantidad variable de argumentos?
- 22. ¿LINQ es una opción válida?
- 23. Es get_result() una llamada obligatoria para put_async() en Google App Engine
- 24. Ninject: ¿sintaxis obligatoria de Singleton?
- 25. ¿Es posible hacer una automatización de consola Firebug?
- 26. ¿Es posible hacer una diferencia inteligente entre archivos?
- 27. Jquery $ .post() - ¿Es posible hacer una solicitud de página completa?
- 28. ¿Es posible hacer una solicitud JSONP de HTTPS a HTTP?
- 29. Google App Engine: ¿es posible hacer una consulta Gql LIKE?
- 30. C# versión de optparse?
Sí, es posible. Consulte la respuesta a esta pregunta aquí (http://stackoverflow.com/questions/4407539/) – user225312
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
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