Sto usando arparse per aggiornare un config dict usando i valori specificati sulla riga di comando. Poiché voglio solo aggiornare i valori nella configurazione per cui un valore è stato esplicitamente menzionato sulla riga di comando.Come scoprire se l'argomento argparse è stato effettivamente specificato sulla riga di comando?
Pertanto, cerco di identificare gli argomenti non specificati controllando ciascuna azione se getattr(args, action.dest) == action.default
o l'uguaglianza del tipo convertito arg. Poi aggiorno tutti i miei valori nel dict per il quale questo è falso.
Ma questo naturalmente fallisce, se specifichi esplicitamente un argomento sulla riga di comando che è lo stesso del mio argomento predefinito. C'è la possibilità di identificare questi argomenti esplicitamente citati con argparser o ho per identificarli manualmente in sys.argv?
Grazie!
Edit:
Per rendere più chiara le mie intenzioni. Ho un argomento come la seguente:
parser.add_argument('--test', default='meaningful_default')
e una configurazione simile
config = { 'test' : 'nondefault_val'}
Ora voglio aggiornare la configurazione solo con gli argomenti esplicitamente specificati. Confrontando i args attributi con i valori di default funziona fino a quando non mi specificare qualcosa di simile prog.py --test meaningful_default
di aggiornare di nuovo il mio config con un valore che sembra appena essere anche il valore di default
Perché? Se l'argomento è uguale al valore predefinito, perché è importante? –
Se una delle risposte di seguito risolve il problema, è necessario accettarlo (fare clic sul segno di spunta accanto alla risposta appropriata). Questo fa due cose. Permette a tutti di sapere che il tuo problema è stato risolto in modo soddisfacente e dà la persona che ti aiuta a riconoscere l'assistenza. [Vedi qui] (http://meta.stackexchange.com/a/5235) per una spiegazione completa. –