Ich habe ein Python-Skript, das einige Befehlszeileneingaben erfordert, und ich verwende argparse, um sie zu analysieren. Ich fand die Dokumentation etwas verwirrend und konnte keine Möglichkeit finden, in den Eingabeparametern nach einem Format zu suchen. Was ich unter Überprüfen des Formats verstehe, wird anhand dieses Beispielskripts erklärt:
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__)))
Ich muss nach Optionen suchen -s
und sicherstellen, -e
dass die Eingabe des Benutzers im Format vorliegt YYYY-MM-DD
. Gibt es eine Option in Argparse, von der ich nicht weiß, welche dies bewirkt?
quelle
valid_date()
das angegebene Argument eine Zeichenfolge an?Um die obige Antwort zu ergänzen, können Sie eine Lambda-Funktion verwenden, wenn Sie sie auf einem Einzeiler belassen möchten. Beispielsweise:
Alter Thread, aber die Frage war zumindest für mich noch relevant!
quelle
invalid <lambda> value
Für andere, die dies über Suchmaschinen erreichen: In Python 3.7 können Sie die Standardklassenmethode
.fromisoformat
verwenden, anstatt das Rad für ISO-8601-konforme Daten neu zu erfinden, z.quelle
dateutil
der ISO-Parser eine Reihe zusätzlicher FMTS, die noch ISO 8601-2004-konform sind. Sie könnenimport dateutil.parser
->type=dateutil.parser.isoparse
odertype=dateutil.parser.parse
dateutil
ein Paket von Drittanbietern. Man müsste seine Vorteile anhand des (kleinen) Aufwandes bei der zusätzlichen Installation beurteilen. YMMV.