IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

argparse argument avec tiret [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 85
    Par défaut argparse argument avec tiret
    Bonjour,

    J'utilise le module argparse, cependant je rencontre un problème lorsque mon programme contient un argument obligatoire qui peut être consititué du tiret '-'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        parser = argparse.ArgumentParser(prog='name', allow_abbrev=False)
        parser.add_argument('mandatory', type=str)
        parser.add_argument('-v', '--verbose', action="store_true", help="Verbose mode")
        args = parser.parse_args()
    python3 test.py -v "abc"=> OK
    python3 test.py "-X12" => KO (il pense que -X est une option (qui n'exite pas) malgrès les doubles quotes")
    Avez-vous une solution ?

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut,
    Il faut séparer les arguments optionnels des arguments obligatoires par la chaîne "--":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ./test.py -- -X12
    Namespace(mandatory='-X12', verbose=False)

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a au moins une possibilité (il y en a peut-être d'autres?): changer le préfix '-' => '+':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        parser = argparse.ArgumentParser(prog='name', allow_abbrev=False, prefix_chars='+')
        parser.add_argument('mandatory', type=str)
        parser.add_argument('+v', '++verbose', action="store_true", help="Verbose mode")
        args = parser.parse_args()
    [edit] mais j'aime bien la solution de __dardanos__

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Arguments avec Main
    Par smutmutant2003 dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2007, 11h46
  2. Erreur d'argument avec runqq
    Par janviech dans le forum Fortran
    Réponses: 3
    Dernier message: 11/08/2006, 09h19
  3. Alias avec argument avec bash
    Par Jack_serious dans le forum Linux
    Réponses: 2
    Dernier message: 03/06/2006, 21h24
  4. Réponses: 8
    Dernier message: 01/06/2006, 11h14
  5. [VBA-E] passage d'argument avec la méthode "Show"
    Par JOUBERT dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/03/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo