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.