Empfangen Sie den Datumstyp (Datum / Uhrzeit) mit ArgumentParser [Python]

Einführung

Eine Erinnerung daran, wie ein Wert vom Typ datetime.date als optionales Argument in Python empfangen wird.

Was du machen willst

Geben Sie den Datum / Uhrzeit-Typ mit ArgumentParser an

Für die grundlegende Verwendung von Argparse war Official Tutorial hilfreich. Im Tutorial wird der Typ int angegeben, aber dieses Mal möchte ich den Typ datetime.date angeben.

Definieren Sie eine Funktion date_type, die eine Datumszeichenfolge (z. B. 2020-01-01) in ein Datumsobjekt konvertiert, und geben Sie sie im Typ ArgumentParser an.

test.py


import argparse
import datetime

# str ->Datumstyp-Konvertierungsfunktion
def date_type(date_str):
    return datetime.date.fromisoformat(date_str)

if __name__ == '__main__':
    #Holen Sie sich ArgumentParser
    arg_parser = argparse.ArgumentParser()
    #Definition von Datumsangaben
    arg_parser.add_argument("-d", "--date",
                            help="Date must be in ISO format. For example: 2020-01-01.",
                            type=date_type)
    #Holen Sie sich optionale Argumente
    args = arg_parser.parse_args()
    date = args.date

    print(date.year,date.month,date.day)

Ausführungsergebnis

>python test.py -d 2020-01-01
2020 1 1

Passen Sie die Fehlermeldung an

Wenn im obigen Code das optionale Argument ein anderes Format als das Datum des ISO-Formats hat, wird der folgende Fehler ausgegeben.

>python test.py -d hoge
usage: mtg.py [-h] [-d DATE]
mtg.py: error: argument -d/--date: invalid date_type value: 'hoge'

Ich mag es nicht, wenn der definierte Funktionsname date_type in der Fehlermeldung enthalten ist. Passen Sie daher den Fehlerinhalt an.

Ändern Sie die Typkonvertierungsfunktion date_type früher wie folgt.

def date_type(date_str):
    try:
        return datetime.date.fromisoformat(date_str)
    except ValueError as e:
        raise argparse.ArgumentTypeError(str(e) + " Date must be in ISO format. ex. 2020-01-01")

Try-Except löst eine neue Ausnahme aus.

Der Typ der zu verarbeitenden Ausnahme (ValueError) wurde tatsächlich generiert und bestätigt.
>>> import datetime
>>> datetime.date.fromisoformat('hoge')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid isoformat string: 'hoge'

Ausführungsergebnis

>python test.py -d hoge
usage: test.py [-h] [-d DATE]
test.py: error: argument -d/--date: Invalid isoformat string: 'hoge' Date must be in ISO format. ex. 2020-01-01

abschließend

Zuerst habe ich mit python argparser datetime gegoogelt, aber ich konnte keine japanische Literatur finden, weil sie zu eckig war, also habe ich einen Artikel gemacht.

Verweise

Offizielles Argparser-Tutorial: Argparse-Tutorial - Python 3.8.2-Dokumentation

Ich habe auch auf den Artikel von @ kzkadc verwiesen: bow: [Eine kurze Zusammenfassung der Verwendung von ArgumentParser --Qiita](https://qiita.com/kzkadc/items/e4fc7bc9c003de1eb6d0#%E5%9E%8B%E6%8C%87%E5%AE%9A%E3%81% 97% E3% 81% 9F% E3% 81% 84)

Offizielle Dokumentation [argparse \ - \ - \ - Befehlszeilenoption, Argument, Unterbefehlsparser - Python 3 \ .8 \ .2 Dokumentation](https://docs.python.org/en/3/library/argparse.html# Art)

Recommended Posts

Empfangen Sie den Datumstyp (Datum / Uhrzeit) mit ArgumentParser [Python]
Holen Sie sich ein Date mit Python
Extrahieren Sie "Nur aktuelles Datum" und "Aktuelles Datum und Uhrzeit" mit Python datetime.
0 Konvertieren Sie nicht ausgefülltes Datum in Datums- / Uhrzeittyp mit regulärem Ausdruck
Python> Datum / Uhrzeit> Von der Datumszeichenfolge (ISO-Format: 2015-12-09 12:40:08) zum Datum / Uhrzeit-Typ
Scikit-learn DecisionTreeClassifier mit Datetime-Typwerten
So berechnen Sie das Datum mit Python
Beherrsche den Typ mit Python [Python 3.9 kompatibel]
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
Empfangen Sie Textdaten von MySQL mit Python
[Python] Einfache Überprüfung des Argumenttyps mit Datenklasse
POST verschieden mit Python und empfange mit Flask
FizzBuzz in Python3
Scraping mit Python
Python-Datumsarithmetik
[Python] Erstellen Sie eine Liste mit Datum und Uhrzeit (Datum / Uhrzeit-Typ) für einen bestimmten Zeitraum
Numerischer Python-Typ
Konvertieren Sie die "Anzahl" des Excel-Datums in die Python-Datumszeit
Statistik mit Python
Scraping mit Python
Python mit Go
In Python integrieren
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Überprüfen Sie das Datum der Flaggenpflicht mit Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
[Python3] Lesen und Schreiben mit datetime isoformat mit json
Bingo mit Python
Zundokokiyoshi mit Python
Python2-Zeichenfolgentyp
Python # String-Typ
Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht
[Python] Klassentyp und Verwendung des datetime-Moduls
[Python] Bestimmen Sie den Typ der Iris mit SVM
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Python] Konvertiert die Zeitanzeige (str-Typ) mit "" "und" '"in Sekunden (float-Typ) mit datetime und timedelta
Simulieren Sie ein gutes Weihnachtsdatum mit einem Python-optimierten Modell
[Python] Erstellen Sie mit np.arange ein Datumsarray mit beliebigen Inkrementen
Finden Sie das Datum dieser Woche in einem beliebigen Format mit Python
Zusammenfassung der Datumsverarbeitung in Python (Datum / Uhrzeit und Datum)
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus