Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...
Python - Dict -> JSON und umgekehrt
-
Ich möchte hier noch mal was für Einsteiger ablegen. Man hat ja am Anfang immer so das Problem, wie speichere ich meine Daten dauerhaft und lade diese wieder!? Das hat mir am Anfang viele Kopfschmerzen beschert. Hier mal ein Listing, wie man das so grob mal ausprobieren kann.
import json # instantiate an empty dict backups = {} # add some data backups[0] = {'name': 'Test', 'repository': '/home/frankm/repo1'} backups[1] = {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'} backups[2] = {'name': 'NAS', 'repository': '/home/frankm/repo3'} # print some data print(backups) print('------') print(backups[1]) print('------') print(backups[1]['name']) print('------') # save backups to JSON with open('mydata.json', 'w') as f: json.dump(backups, f) # print values for i in backups.values(): print(i) print('------') # output # {'name': 'Test', 'repository': '/home/frankm/repo1'} # {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'} # {'name': 'NAS', 'repository': '/home/frankm/repo3'} # load JSON with (open('mydata.json', 'r')) as f: backups_reload = json.load(f) # Test for i in backups_reload.values(): print(i) print('------') # Print keys # Delete key_list keys_list = [] # redo keys_list for key in backups: keys_list.append(key) print(keys_list) print('------') # delete an entry result = backups.pop(1, False) if not result: print('Error') # Kontrolle for i in backups.values(): print(i) print('------') # Print keys # Delete key_list keys_list = [] # redo keys_list for key in backups: keys_list.append(key) print(keys_list) print('------') # Print last key print(list(dict.keys(backups))[-1]) print('------') print(type(list(dict.keys(backups))[-1])) # Add new entry backups[list(dict.keys(backups))[-1]+1] = {'name': 'Test', 'repository': '/home/frankm/repo1'} print('------') # Print keys # Delete key_list keys_list = [] # redo keys_list for key in backups: keys_list.append(key) print(keys_list)
Wir erstellen ein DICT, fülle das mit Daten. Danach speichern wir als JSON. Das JSON wird wieder geladen, in ein anderes DICT (zur Kontrolle).
Dann löschen wir einen Eintrag, legen einen neuen an und geben das aus.
Dazwischen findet man immer wieder ein paar Kontrollausgaben, das sieht am Schluss dann so aus.
{0: {'name': 'Test', 'repository': '/home/frankm/repo1'}, 1: {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'}, 2: {'name': 'NAS', 'repository': '/home/frankm/repo3'}} ------ {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'} ------ Haupt-PC ------ {'name': 'Test', 'repository': '/home/frankm/repo1'} {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'} {'name': 'NAS', 'repository': '/home/frankm/repo3'} ------ {'name': 'Test', 'repository': '/home/frankm/repo1'} {'name': 'Haupt-PC', 'repository': '/home/frankm/repo2'} {'name': 'NAS', 'repository': '/home/frankm/repo3'} ------ [0, 1, 2] ------ {'name': 'Test', 'repository': '/home/frankm/repo1'} {'name': 'NAS', 'repository': '/home/frankm/repo3'} ------ [0, 2] ------ 2 ------ <class 'int'> ------ [0, 2, 3] Process finished with exit code 0
Ich hoffe das es dem ein oder anderem das Leben etwas einfacher macht.
-