Python: Comment faire une option pour être tenu dans optparse?
J'ai lu ce http://docs.python.org/release/2.6.2/library/optparse.html
Mais je ne suis pas clair comment faire une option pour être tenu dans optparse?
J'ai essayé de mettre "required=1", mais j'ai une erreur:
non valide mot-clé arguments: la
Je veux faire mon script exiger --file
option pour être saisies par les utilisateurs. Je sais que le action
mot-clé vous donne d'erreur lorsque vous n'avez pas à fournir de la valeur à --file
dont action="store_true"
.
- dans n'importe quel navigateur appuyez sur ctrl+F et tapez "nécessaire": koders.com/python/..., koders.com/python/...
- Peut-être vous devriez envisager d'utiliser la
argparse
module à la place. - J'aime le sarcastique devis
the phrase “required option” is self-contradictory in English
à partir de OptParse page de manuel de.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre en œuvre une option obligatoire facilement.
parser.parse_args()
renvoie unetuple
, donc je les laisse rester!for group in parser.option_groups:...
Sur le message d'aide de chaque variable Im écrivant un '[OBLIGATOIRE] " chaîne au début, le marquer à être analysées plus tard, alors je peux tout simplement utiliser cette fonction pour l'enrouler autour de:
import re
, utilisez la chaînestartwith
méthode comme ceci:if option.help.startswith('[REQUIRED]')
...Depuis
if not x
ne fonctionne paspour certains(négatif,zéro) les paramètres
et à prévenir de nombreuses si les tests,
je preferr quelque chose comme ceci:
L'actuel répondre avec le plus de votes ne fonctionnerait pas si, par exemple, l'argument était un integer ou float pour lequel le zéro est une entrée valide. Dans ces cas, on dirait qu'il y a une erreur. Une alternative (à ajouter à plusieurs autres ici) serait de le faire par exemple
Je suis obligé d'utiliser la version 2.6 de python pour notre solution je suis donc en tenir à module optparse.
Voici la solution que j'ai trouvée pour vérifier les options requises qui fonctionne sans préciser la deuxième fois de la liste des options requises. Ainsi, lorsque vous ajoutez de nouvelles option, vous n'avez pas à ajouter son nom dans la liste des options à cocher.
Mes critères pour l'option - valeur d'option ne doit être d'Aucun et cette options n'ont pas de valeur par défaut (l'utilisateur n'a pas spécifié add_option(par défaut="...",...).
Il existe au moins deux méthodes de mise en œuvre des options requises avec
optparse
. Comme mentionné dans le docs page, optparse ne vous empêche pas de mettre en œuvre les options nécessaires, mais ne vous donne pas beaucoup d'aide à qu'il soit. Trouvez ci-dessous les exemples trouvés dans les fichiers distribués avec la source.Veuillez toutefois noter que
optparse
module est obsolète depuis la version 2.7 et ne sera pas développé plus loin. Vous devez utiliserargparse
module à la place.Version 1: Ajouter une méthode à OptionParser les applications qui doivent appeler après l'analyse des arguments:
Source:
docs/lib/required_1.txt
Version 2: Étendre Option et ajouter un attribut nécessaire; étendre OptionParser de veiller à ce que les options sont présents après l'analyse:
Source:
docs/lib/required_2.txt
Je suis aussi bloqué sur la version 2.6 de python (languir pour python2.7 et argparse, qui a non seulement des arguments requis, mais me permet de préciser que l'une d'un ensemble doivent être fournis); mon approche nécessite un second passage, mais me laisse invite les arguments manquants, à moins que l'exécution en mode batch:
(Je pense à faire mon propre analyseur de classe qui a les mêmes options pour des configs cuit.)
Une autre réponse à cette question citée de l'analyseur.erreur, que je ne connaissait pas quand j'ai écrit le code, mais a peut-être été un meilleur choix.
Que le module optparse est obsolète depuis la version 2.7, vous trouverez probablement un peu plus à jour des exemples ici: Mort simple argparse exemple voulu: 1 argument, 3 résultats
Je voudrais utiliser argparse bibliothèque qui dispose de cette fonctionnalité intégré:
argparse de référence