J'ai actuellement le code suivant:choix des réglages séparés pour deux arguments à l'aide de valeurs argparse en Python
import argparse
parser = argparse.ArgumentParser(description='Adds a new modem to Iridium account')
parser.add_argument('imei', metavar='I', nargs=1, help='the modems IMEI')
parser.add_argument('-t1', '--type1', metavar='t1', nargs=1, choices=('email', 'directip', 'sbddevice'), default='directip', help='Call type (default: directip)')
parser.add_argument('-a1', '--address1', metavar='a1', nargs=1, default='75.101.138.217:9097', help='Call address (default: 75.101.138.217:9097)')
parser.add_argument('-t2', '--type2', metavar='t2', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a2', '--address2', metavar='a2', nargs=1, help='Call address')
parser.add_argument('-t3', '--type3', metavar='t3', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a3', '--address3', metavar='a3', nargs=1, help='Call address')
parser.add_argument('-t4', '--type4', metavar='t4', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a4', '--address4', metavar='a4', nargs=1, help='Call address')
parser.add_argument('-t5', '--type5', metavar='t5', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a5', '--address5', metavar='a5', nargs=1, help='Call address')
args = parser.parse_args()
Est-il possible que je peux combiner toutes les -a -t et en dire -m1, -m2 , -m3, -m4, -m5 où t est la première valeur de l'argument dont les mêmes choix ci-dessous et -a est le deuxième argument mais pas limité aux mêmes choix que la première valeur? Il semble que vous devriez être capable de faire cela, sinon vous devrez faire un tas de vérifications plus tard pour voir s'il y a un t1 et un a1 puisque si l'utilisateur en fournit un, il doit fournir l'autre.
Ainsi, au lieu de faire -t1 email -a1 [email protected]
vous pouvez simplement faire -m1 email [email protected]
Qu'en est-il un simple 'email -m1: Test @ gmail.com' à la place ? Je ne connais pas encore assez bien l'argument "argparse" pour dire combien il est facile (si possible) de faire avaler deux args pour une seule option, mais en tant qu'utilisateur, je serais étonné d'un tel comportement d'analyse bizarre, alors que 'type: wh @ tever' me semble parfaitement naturel. –
Aussi la restriction à l'exactitude de cinq adresses semble un peu arbitraire. Peut-être que vous voulez juste les adresses comme arguments de position et l'IMEI comme option? – Philipp
Vous pouvez le faire accepter deux args avec 'nargs = 2' et analyser la sortie après cela (Your' choices = 'ne fonctionnera pas avec ça). Mais je suppose que vous êtes allé avec la méthode '~'. – avacariu