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
Aus Csv Datei unixdatum umwandeln nach Datum
Hi Georg,
ich denke, dieser Code ist das, was du suchst :
VG
YAPD
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'))
YAPD
-----
Yet Another Python Developer
Yet Another Python Developer
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.
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.
`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 ("------------------------------------")