Voglio avere alcune opzioni nel modulo argparse come --pm-export
tuttavia quando provo ad usarlo come args.pm-export
ottengo l'errore che non c'è attributo pm
. Come posso aggirare questo problema? È possibile avere -
nelle opzioni della riga di comando?Avere opzioni in argparse con un trattino
risposta
Come indicated in the argparse
docs:
Per le azioni di argomenti opzionali, il valore di dest è normalmente dedotte da stringhe di opzione. ArgumentParser genera il valore di dest prendendo la prima stringa di opzioni lunghe e stripping della stringa
--
iniziale. Qualsiasi interne-
caratteri verranno convertiti in caratteri_
per assicurarsi che la stringa è un nome di attributo valido
Quindi si dovrebbe utilizzare args.pm_export
.
trattini vengono convertiti in sottolineature:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo-bar')
args = pa.parse_args(['--foo-bar', '24'])
print args # Namespace(foo_bar='24')
Purtroppo, trattino-a-sottolineatura sostituzione non funziona per positionalarguments (non preceduti da --
) come
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
Quindi, è necessario utilizzare l'argomento 1'st per add_argument()
come nome dell'attributo e metavar
kwarg a impostare come dovrebbe apparire in help:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
Il rapporto bug relativo a Python: http://bugs.python.org/issue15125. 'argparse' usa' setattr' e 'getattr', quindi i nomi' dest' non devono essere validi nomi attributo 'punto'. L'utente può anche usare 'getattr'. – hpaulj
Mi piacerebbe fare 'positional_arg = getattr (parser, 'positional-arg')' –
Esattamente quello di cui avevo bisogno - Ho fatto il backward con 'metavar' e non riuscivo a capire perché non funzionava. Grazie! – dwanderson
- 1. Python argparse: opzioni separate per argomenti posizionali
- 2. argparse chiama una funzione dopo aver analizzato altre opzioni
- 3. argparse augment sub-command defaults tramite opzioni globali
- 4. sostituire più trattini con un trattino
- 5. python argparse per gestire opzioni numeriche arbitrarie (come HEAD (1))
- 6. Python Modulo con un trattino, o un trattino (-) nel suo nome
- 7. segnala prima le opzioni non valide (o usa espressioni regolari) con il modulo argparse python
- 8. stdin Extra in Python con argparse
- 9. argparse con i sottocomandi richiesti
- 10. Un campo tabella può contenere un trattino?
- 11. Ruby 1.9 hash con un trattino in una chiave
- 12. Convertire la stringa con trattino in CamelCase
- 13. Python argparse opzione
- 14. Come avere un'opzione che abilita altre opzioni in Opzioni del programma di potenziamento senza utilizzare variabili?
- 15. Ottenere sottocomando selezionato con argparse
- 16. Come avere argomenti di sub-parser nello spazio dei nomi separato con argparse?
- 17. Disabilita abbreviazione in argparse
- 18. Python, argparse: come avere nargs = 2 con type = str e il tipo = int
- 19. nodo SimpleXML lettura con un nome con trattino
- 20. Come posso grep per una stringa che inizia con un trattino/trattino?
- 21. C'è un modo pulito per visualizzare un trattino con haml
- 22. Creazione di un JOptionPane con 4 opzioni
- 23. Passando argomenti (per argparse) con scoprimento unittest
- 24. punto: trattino nel nome
- 25. argparse prima dell'argomento posizionale
- 26. Problemi con e-mail iniziati con "-" (trattino)
- 27. Come avere un'opzione opzionale nel potenziamento delle opzioni del programma?
- 28. argparse mancante in python 3
- 29. Soppressione di un trattino "." in uscita numerica da Mathematica
- 30. AS3: le variabili private devono avere un _
Solo per argomenti facoltativi. Quelli necessari per mantenere i trattini, quindi richiedono un trattino basso per renderli accessibili. – n00dle