Est-il possible de passer une liste personnalisée d'arguments?

Plus par curiosité par rapport à un cas d'utilisation réel, mais par exemple, je pourrais vouloir convertir tous les paramètres en minuscules avant de laisser argparse faire son travail.

2
neverendingqs 20 juil. 2015 à 22:18

2 réponses

Meilleure réponse

Oui. Passez simplement la liste que vous souhaitez parse_args.

D'après l'exemple de la documentation:

>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
3
NightShadeQueen 20 juil. 2015 à 19:25

parse_args utilise sys.argv[1:] si vous ne lui donnez pas d'argument de liste. Vous pouvez charger sys.argv vous-même et le modifier. S'il est modifié sur place, il peut toujours être transmis implicitement.

import sys
import argparse
parser = ...

# modify sys.argv inplace
sys.argv[1:] = [x.lower() for x in sys.argv[1:]]
args = parser.parse_args()  # pass it implicitily
# or pass it explicitly
args = parser.parse_args(sys.argv[1:])
1
hpaulj 21 juil. 2015 à 16:25