Json Format richtig benutzen
Verfasst: Donnerstag 21. April 2022, 13:36
Hallo zusammen.
Ich bin neu hier und grüße erstmal freundlich in die Runde!
Erstmal möchte ich ein Danke an die Community schicken, ich hab hier beim lesen schon so einiges lernen können.
Leider konnte ich keinen passenden Beitrag zu meinem Problem finden.
Als angehender FISI (Umschulung 8er Monat) bin ich leider nur durch einen Crashkurs in der Programmierung gelaufen.
Ich versuche gerade ein Programm zu schreiben um die durchschnittlichen Zeiten der Pings festzuhalten was auch an sich erstmal funktioniert.
Nun habe ich aber das Problem, dass ich nachdem ich alles in json_files abgelegt habe, beim erneuten Ausführen die Formatierung im json_file nicht mehr passt.
Ich lasse mal den Code und alles was so rauskommt hier und hoffe auf etwas Unterstützung wo ich den Denkfehler habe.
Fehler die durch eine falsche Eingabe der Nutzer entstehen können, bitte ich erstmal zu ignorieren.
Später sollen die Daten nicht mehr händisch angegeben werden bzw. Fehler abgefangen werden.
Ich weiß solche Programme existieren schon, aber ich möchte mich zu Lehrzwecken daran versuchen.
Mit .txt und mit .csv lief ich in ähnliche Fehler.
#Progammanfang....
#...Programmende
Ausgabe 1. Ausführung
[]
[]
Bitte Messwert eingeben
>10
Datum der Messung 2022-04-21 13:57:29.756469
Dauer des Pings:10
Durchschnitt der Dauer eines Pings: 10.0
Enter zum fortfahren!
[10]
[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469)]
Bitte Messwert eingeben
>20
Datum der Messung 2022-04-21 13:57:29.756469
Datum der Messung 2022-04-21 13:57:34.549347
Dauer des Pings:10
Dauer des Pings:20
Durchschnitt der Dauer eines Pings: 15.0
Enter zum fortfahren!
[10, 20]
[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347)]
Bitte Messwert eingeben
>5
Datum der Messung 2022-04-21 13:57:29.756469
Datum der Messung 2022-04-21 13:57:34.549347
Datum der Messung 2022-04-21 13:57:38.460024
Dauer des Pings:10
Dauer des Pings:20
Dauer des Pings:5
Durchschnitt der Dauer eines Pings: 11.666666666666666
Enter zum fortfahren!
json_files nach dem 1. Durchlauf:
pings.json: [10, 20, 5]
datum_pings.json:"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"
Soweit so gut, aber beim erneuten Aufrufen des Programms passiert dann folgendes:
Ausgabe 2. Ausführung
['[10, 20, 5]']
['"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"']
Bitte Messwert eingeben
>1
Datum der Messung "[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"
Datum der Messung 2022-04-21 14:02:25.735320
Dauer des Pings:[10, 20, 5]
Dauer des Pings:1
Traceback (most recent call last):
File "C:\Users\mreese\Desktop\PingMessung\DurchschnittlicherPing.py", line 41, in <module>
durchschnitt = int(sum(pings)) / int(len(pings))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
#....Ausgabenende
json_files nach dem 2. Durchlauf:
pings.json: ["[10, 20, 5]", 1]
datum_pings.json:"['\"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]\"', datetime.datetime(2022, 4, 21, 14, 2, 25, 735320)]"
Ab hier sind dann die json_files dann hinüber, irgendwie packt er meine Liste nicht mehr als Array allein in die files sondern ein Array in ein Array.
Wie kann ich das vermeiden?
Das Array im Array macht mir Schwierigkeiten, ich verstehe nicht genau warum das so passiert.
Ich hoffe der Code ist lesbar, meine Erfahrungen sind leider sehr beschränkt und der Unterricht war aufgrund von Corona nur online und zu wenig.
Vielen Dank schonmal im Vorraus für eure Mühe.
Ich bin neu hier und grüße erstmal freundlich in die Runde!
Erstmal möchte ich ein Danke an die Community schicken, ich hab hier beim lesen schon so einiges lernen können.
Leider konnte ich keinen passenden Beitrag zu meinem Problem finden.
Als angehender FISI (Umschulung 8er Monat) bin ich leider nur durch einen Crashkurs in der Programmierung gelaufen.
Ich versuche gerade ein Programm zu schreiben um die durchschnittlichen Zeiten der Pings festzuhalten was auch an sich erstmal funktioniert.
Nun habe ich aber das Problem, dass ich nachdem ich alles in json_files abgelegt habe, beim erneuten Ausführen die Formatierung im json_file nicht mehr passt.
Ich lasse mal den Code und alles was so rauskommt hier und hoffe auf etwas Unterstützung wo ich den Denkfehler habe.
Fehler die durch eine falsche Eingabe der Nutzer entstehen können, bitte ich erstmal zu ignorieren.
Später sollen die Daten nicht mehr händisch angegeben werden bzw. Fehler abgefangen werden.
Ich weiß solche Programme existieren schon, aber ich möchte mich zu Lehrzwecken daran versuchen.
Mit .txt und mit .csv lief ich in ähnliche Fehler.
#Progammanfang....
Code: Alles auswählen
import json, sys, datetime
ping = 0
durchschnitt = 0
pings = open('pings.json','r')
datum_pings = open('datum_pings.json','r')
pings = list(pings)
datum_pings = list(datum_pings)
while True:
print(pings)
print(datum_pings)
datum_pings.append(datetime.datetime.now())
with open('datum_pings.json', 'w') as datei_1:
datei = json.dumps(str(datum_pings))
datei_1.write(datei)
datei_1.close()
ping = int(input("Bitte Messwert eingeben\n>"))
pings.append(ping)
with open("pings.json", 'w') as datei_2:
datei = json.dumps(pings)
datei_2.write(datei)
datei_2.close()
print()
for i in datum_pings:
print("Datum der Messung", str(i))
for i in pings:
print("Dauer des Pings:" + str(i))
durchschnitt = int(sum(pings)) / int(len(pings))
print("Durchschnitt der Dauer eines Pings:", str(durchschnitt))
input("Enter zum fortfahren!")
Ausgabe 1. Ausführung
[]
[]
Bitte Messwert eingeben
>10
Datum der Messung 2022-04-21 13:57:29.756469
Dauer des Pings:10
Durchschnitt der Dauer eines Pings: 10.0
Enter zum fortfahren!
[10]
[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469)]
Bitte Messwert eingeben
>20
Datum der Messung 2022-04-21 13:57:29.756469
Datum der Messung 2022-04-21 13:57:34.549347
Dauer des Pings:10
Dauer des Pings:20
Durchschnitt der Dauer eines Pings: 15.0
Enter zum fortfahren!
[10, 20]
[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347)]
Bitte Messwert eingeben
>5
Datum der Messung 2022-04-21 13:57:29.756469
Datum der Messung 2022-04-21 13:57:34.549347
Datum der Messung 2022-04-21 13:57:38.460024
Dauer des Pings:10
Dauer des Pings:20
Dauer des Pings:5
Durchschnitt der Dauer eines Pings: 11.666666666666666
Enter zum fortfahren!
json_files nach dem 1. Durchlauf:
pings.json: [10, 20, 5]
datum_pings.json:"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"
Soweit so gut, aber beim erneuten Aufrufen des Programms passiert dann folgendes:
Ausgabe 2. Ausführung
['[10, 20, 5]']
['"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"']
Bitte Messwert eingeben
>1
Datum der Messung "[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]"
Datum der Messung 2022-04-21 14:02:25.735320
Dauer des Pings:[10, 20, 5]
Dauer des Pings:1
Traceback (most recent call last):
File "C:\Users\mreese\Desktop\PingMessung\DurchschnittlicherPing.py", line 41, in <module>
durchschnitt = int(sum(pings)) / int(len(pings))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
#....Ausgabenende
json_files nach dem 2. Durchlauf:
pings.json: ["[10, 20, 5]", 1]
datum_pings.json:"['\"[datetime.datetime(2022, 4, 21, 13, 57, 29, 756469), datetime.datetime(2022, 4, 21, 13, 57, 34, 549347), datetime.datetime(2022, 4, 21, 13, 57, 38, 460024)]\"', datetime.datetime(2022, 4, 21, 14, 2, 25, 735320)]"
Ab hier sind dann die json_files dann hinüber, irgendwie packt er meine Liste nicht mehr als Array allein in die files sondern ein Array in ein Array.
Wie kann ich das vermeiden?
Das Array im Array macht mir Schwierigkeiten, ich verstehe nicht genau warum das so passiert.
Ich hoffe der Code ist lesbar, meine Erfahrungen sind leider sehr beschränkt und der Unterricht war aufgrund von Corona nur online und zu wenig.
Vielen Dank schonmal im Vorraus für eure Mühe.