Mon exigence est de passer un Tuple comme argument de ligne de commande comme
--data (1,2,3,4)
J'ai essayé d'utiliser le module argparse
, mais si je passe comme ça, il reçoit comme chaîne '(1,2,3,4)'
. J'ai essayé en donnant type=Tuple
Pour argparse.add_argument
, Mais cela ne sert à rien ici.
Dois-je ajouter une nouvelle classe de type et la transmettre à l'argument type de add_argument
?
Mise à jour
J'ai essayé le ast.literal_eval
Sur la base des réponses. Merci pour ça. Mais cela donne des espaces dans le résultat comme indiqué ci-dessous.
(1,2,3,4)
<type 'str'>
(1, 2, 3, 4)
<type 'Tuple'>
Définissez nargs
de l'argument data
sur nargs="+"
(signifiant un ou plusieurs) et saisissez int
, vous pouvez ensuite définir les arguments comme ceci sur la ligne de commande:
--data 1 2 3 4
args.data
sera désormais une liste de [1, 2, 3, 4]
.
Si vous devez avoir un tuple, vous pouvez faire:
my_Tuple = Tuple(args.data)
Mettre tous ensemble:
parser = argparse.ArgumentParser()
parser.add_argument('--data', nargs='+', type=int)
args = parser.parse_args()
my_Tuple = Tuple(args.data)