J'ai un script python qui nécessite des entrées de ligne de commande et j'utilise argparse pour les analyser. J'ai trouvé la documentation un peu déroutante et je n'ai pas trouvé de moyen de vérifier un format dans les paramètres d'entrée. Ce que je veux dire par vérification du format est expliqué dans cet exemple de script:
parser.add_argument('-s', "--startdate", help="The Start Date - format YYYY-MM-DD ", required=True)
parser.add_argument('-e', "--enddate", help="The End Date format YYYY-MM-DD (Inclusive)", required=True)
parser.add_argument('-a', "--accountid", type=int, help='Account ID for the account for which data is required (Default: 570)')
parser.add_argument('-o', "--outputpath", help='Directory where output needs to be stored (Default: ' + os.path.dirname(os.path.abspath(__file__)))
Je dois vérifier l'option -s
et -e
que l'entrée de l'utilisateur est au format YYYY-MM-DD
. Y a-t-il une option dans argparse que je ne sais pas qui accomplit cela.
la source
valid_date()
que l'argument donné est une chaîne?Juste pour ajouter à la réponse ci-dessus, vous pouvez utiliser une fonction lambda si vous souhaitez la conserver sur une seule ligne. Par exemple:
Vieux fil mais la question était toujours d'actualité pour moi au moins!
la source
invalid <lambda> value
Pour les autres qui utilisent les moteurs de recherche: en Python 3.7, vous pouvez utiliser la
.fromisoformat
méthode de classe standard au lieu de réinventer la roue pour les dates conformes à la norme ISO-8601, par exemple:la source
dateutil
l' analyseur ISO prend un certain nombre de fmts supplémentaires qui sont toujours conformes à la norme ISO 8601-2004. Vous pouvez utiliserimport dateutil.parser
->type=dateutil.parser.isoparse
outype=dateutil.parser.parse
dateutil
c'est un package tiers. Il faudrait juger ses avantages par rapport au (petit) tracas de l'installer en plus. YMMV.