Seite 1 von 1

Konvertierung String->Date

Verfasst: Freitag 9. Juli 2021, 20:41
von WLemmy
Hallo,

ich habe aus einem Dateinamen einen Teil herausgetrennt (20210204), das ein Datum repräsentiert und will das konvertieren:

Code: Alles auswählen

part = dateiname[int(5:13]
dateidatum = datetime.strptime(part, "%Y%m%d")
als Fehler erhalte ich:
bei der Verarbeitung ist ein Fehler aufgetreten (<class 'TypeError'>, TypeError('must be str, not datetime.datetime',), <traceback object at 0x7f3f5a20d9c8>)

und ich habe keinen Plan warum. Part ist vom Typ Str. Kann mir jemand auf die Sprünge helfen?

Grüße
Lemmy

Re: Konvertierung String->Date

Verfasst: Freitag 9. Juli 2021, 22:02
von __blackjack__
@WLemmy: Bitte den kompletten, tatsächlich relevanten Code zeigen, mit dem kompletten Traceback. Das gezeigte kommt nicht am Compiler vorbei weil die erste Zeile zu einem Syntaxfehler führt.

Re: Konvertierung String->Date

Verfasst: Samstag 10. Juli 2021, 14:17
von dirk009
Hallo @WLemmy,

so wandelt man den String '20210204' in ein datetime-Objekt um und wieder zurück in einen String:

Code: Alles auswählen

>>> from datetime import datetime
>>> date = datetime.strptime('20210204', '%Y%m%d')
>>> date.strftime('%d.%m.%Y')
'04.02.2021'
Cheers,
Dirk

Re: Konvertierung String->Date

Verfasst: Samstag 10. Juli 2021, 21:24
von WLemmy
Servus, danke für Eure Unterstützung.
hier der Auszug des Logging (nicht gekürzt)!
4043-INFO-Datei /home/entwickler/projekt/working/vvtupdate/Testdaten/20210204/DC20_20210204xyz.csv
4043-INFO-DC20_20210204xyz.csv
4043-INFO-20210204
4043-ERROR-bei der Verarbeitung ist ein Fehler aufgetreten (<class 'TypeError'>, TypeError('must be str, not datetime.datetime',), <traceback object at 0x7fc90b9bc9c8>)
und hier der "gesamte" Code, diesmal nicht abgetippt und vereinfacht:

Code: Alles auswählen

  for item in konfig.FileTypes:
    dateiliste = glob.glob(konfig.ImportDirectory + '/' + item.FileMask)
    logging.info('Dateiliste: ' + str(dateiliste)) 
    for datei in dateiliste:
        with open(datei, encoding='iso-8859_1') as csv_datei:
            reader = csv.reader(csv_datei, delimiter=item.Delimiter)
            logging.info('Datei ' + datei) 
            dateiname = os.path.basename(datei)
            logging.info(dateiname) 
            part = dateiname[int(item.FileDateFrom):int(item.FileDateTo)]
            logging.info(part) 
            dateidatum = datetime.strptime(part, '%Y%m%d')
            logging.info(dateiname + ' ' + dateidatum) 
konfig.FileTypes ist Ergebnis einer Json-Konfiguration mit den Angaben:

Code: Alles auswählen

 "FileDateFrom": "5", "FileDateTo": "13",
jetzt ne Idee, warum hier der Fehler kommt?

Re: Konvertierung String->Date

Verfasst: Samstag 10. Juli 2021, 21:32
von sparrow
Ohne Traceback, der aussagt, in welcher Zeile der Fehler auftritt, kann man nur sagen: du verwendest irgendwo ein datetime.datetime-Objekt, wo du eigentlich eine Zeichenkette verwenden solltest. Zum Beispiel bei dem Vesuch zu loggen. Da stückelst du eine Zeichenkette mit + zusammen (was man in Python nicht tut, stichwort "Stringformatierung") und "dateidatum" ist keine Zeichenkette. Aber auch da müsste die Fehlermeldung anders lauten.

Du musst also den kompletten Traceback zeigen - und die Stelle an der der Fehler auftritt.

Re: Konvertierung String->Date

Verfasst: Samstag 10. Juli 2021, 22:45
von WLemmy
Danke für deine Unterstützung. Fehler war natürlich nicht in der Zeile mit der Konvertierung sondern in der nächsten Zeile mit der Logausgabe. Interessant wie man sich in was verrennen kann.