Domanda

Sto cercando di impostare ArgParse sul mio programma Python ma non funziona. Gli argomenti che sto cercando di elaborare sono i seguenti:

O '--interattivo' o un numero intero per il primo argomento, uno di questi è richiesto

Uno di '--xml' o '--html' o '--text' o '--console'. Ancora una volta, può essere uno di questi, ma uno di essi è necessario per il secondo argomento

E infine per il terzo argomento, un flag '-verbose' che è facoltativo.

Tutti questi argomenti cambiano le variabili in true, a parte l'intero sul primo argomento.

Questo è il codice che ho al momento:

import argparse

parser = argparse.ArgumentParser(description='Python Historical Event Calculator.',
                             prog='tempus.py')

inputs = parser.add_mutually_exclusive_group(required=True)
exports = parser.add_mutually_exclusive_group(required=True)

inputs.add_argument('integer', metavar='I', type=float,
               help='percentage to use')

inputs.add_argument('-i','--interactive', dest='bool_interactive', 
               action='store_true', help='enter interactive mode')

exports.add_argument('-x','--xml', dest='bool_xml', action='store_true',
               help='export output as xml')

exports.add_argument('--html', dest='bool_html', action='store_true',
               help='export output as html')

exports.add_argument('-t','--text', dest='bool_text', action='store_true',
               help='export output as plaintext')

exports.add_argument('-c','--console', dest='bool_con', action='store_true',
               help='export output to console')

parser.add_argument('-v','--verbose', dest='verbose', action='store_true',
               help='enter verbose/debug mode', required=False)

args = parser.parse_args()

Ma non ho idea se sono sulla buona strada con questo, qualcuno può aiutare? Questo sembra giusto o l'ho fatto completamente sbagliato?

Modificare

Ottengo questo traceback quando passerò qualsiasi bandiera:

Traceback (most recent call last):
  File "C:\Users\Callum\Dropbox\Tempus\Feature Tests\argparsetest.py", line 9, in <module>
    help='percentage to use')
  File "C:\Python32\lib\argparse.py", line 1305, in add_argument
    return self._add_action(action)
  File "C:\Python32\lib\argparse.py", line 1528, in _add_action
    raise ValueError(msg)
ValueError: mutually exclusive arguments must be optional

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top