Aus Csv Datei unixdatum umwandeln nach Datum

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ggpy
User
Beiträge: 1
Registriert: Sonntag 1. August 2021, 10:18

Hallo,

Könnte mir jemand helfen wie man ein Unixdatum umwandelt in ein lesbares Datum .

mein Code bis jetzt:
import csv
import pathlib
import datetime
#import datetime
#from datetime import datetime
from dateutil import parser
first_row=8
rownr=0
#with open("data.dat", "r") as csvfile:

csv_datei="/home/georg-asus-suse/public_html/kostal_csv/log31072021.csv"
list_of_rows=[]
with open(csv_datei,'r') as csvfile:
reader = csv.reader(csvfile,delimiter='\t')
for row in reader:
rownr +=1

if rownr==4:
print(len(row))
print(row[ 0 ] + row[ 1 ])
print("------------------------------------")
#elif rownr >=8:
elif rownr>=7:
print(rownr)
#print(len(row))
#print(row[ 0 ])
#print(row[ 0 ] + row[ 2 ])
if len(row[ 1 ])==0:
print("Start Datum")
#print(row[ 0 ])
print("------------------------------------")

if len(row[ 0 ])>=0:
e=int(row[ 0 ])

print(row[ 0 ])
#print(row)
#print(float(e))
timestamp = datetime.datetime.fromtimestamp(e) #dt=datetime.datetime.fromtimestamp(e)
#date = parser.parse(row[0])
# new_date = date.strftime('%Y-%m-%d %H:%M:%S')

print ("------------------------------------")



#print(len(row))
csvfile.close()
Fehlermeldung:
Traceback (most recent call last):
File "/home/georg-asus-suse/public_html/kostal_csv/csvspaltest_2.py", line 41, in <module>
e=int(row[ 0 ])
ValueError: invalid literal for int() with base 10: 'Zeit'

Daten schauen nur mit dem print so aus:
Zeilenr 28384
Csvspalte Datum Unix 1627734306

Danke euch noch für eine Hilfe.

mfg
Georg
Benutzeravatar
YAPD
User
Beiträge: 120
Registriert: Dienstag 27. Juli 2021, 23:23
Wohnort: Frankfurt am Main

Hi Georg,

ich denke, dieser Code ist das, was du suchst :

Code: Alles auswählen

ts = int("1284101485")
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
VG
YAPD
-----
Yet Another Python Developer
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht mal 5 und mal 2.
`pathlib`, und `dateutil.parser` werden importiert aber nicht verwendet.
first_row wird definiert, aber nirgends verwendet. Ebensowenig list_of_rows.
csv-Dateien öffnet man immer mit einem Encoding und der Angabe `newline=""`.
Wenn man einen Zähler braucht, benutzt man `enumerate`.
Statt aber per if-Abfrage verschiedene Bereiche aufzuteilen, macht man mehrere for-Schleifen, oder wie bei Dir, liest die unnötigen Headerzeilen einfach vor der Schleife.
Das `close` ist bei `with` unnötig.

Code: Alles auswählen

import csv
import datetime
from itertools import islice
    
csv_datei = "/home/georg-asus-suse/public_html/kostal_csv/log31072021.csv"
with open(csv_datei, encoding="utf8", newline="") as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    headers = list(islice(reader, 6))
    print(headers[3])
    print("------------------------------------")
    for row_index, row in enumerate(reader, 7):
        print(row_index)
        if not row[1]:
            print("Start Datum")
            print("------------------------------------")
                 
        if row[0]:
            timestamp = datetime.datetime.fromtimestamp(int(row[0]))
            print ("------------------------------------")
Um Helfen zu können, müßte man wissen, wie die Datei genau aussieht. So wie angegeben, sieht sie nämlich nicht aus, da 'Zeit' in keiner Spalte vorkommt.
Antworten