Ich bin per Zufall auf die Bibliothek shelve gestossen ( bin noch anfänger) wenn Ich das richtig verstanden habe -> wenn ICh diese Benutzte ( Information damit "verpacke") sind diese sicherer weil damit 3 weitere Datein erzeugt werden und die Festplatte meine Gespeicherten Daten so wiederherstellen kann ICh verstehe jedoch nicht ganz wann es sinnvoll ist diese zu verwenden:
1.)Bsp1 Configdatein hier macht es aus meiner Sicht Sinn da es meistens kleine Datein sind -> bei der es wichtig sein kann die Einstellungen für ein Programm nie zu verlieren.
2.)Würde es auch Sinnmachen große mengen Messdaten darin zupacken damit diese extra sicher sind ?
Try & Except:
Macht es Sinn sein Skript wie folgt aus zu bauen:
Code: Alles auswählen
import shutil
from tkinter import messagebox
import sys
from os import listdir,makedirs
from pathlib import Path
# Festlegung der Pfade
PFAD_ZUR_NAS = Path(r"E:\NAS_Dummy")
PFAD_ZUR_EXTERNEN_FESTPLATTE = Path(r"E:\Externefestplatte_Dummy")
PFAD_ZUR_FERTIGDATEN = Path(r"C:\Users\Marcel\Desktop\Fertigdaten_Dummy")
# ---------------------------------------------------Programm Anfang-----------------------------------------------------
def ordner_erstellen(nas,externefestplatte,fertigdaten):
"""Hier werden die Oberordner erzeugt"""
try:
nas_Monate_Ordner=nas.joinpath("Monate")
nas_Jahre_Ordner=nas.joinpath("Jahre")
externefestplatte_Monate_Ordner=externefestplatte.joinpath("Monate")
externefestplatte_Jahre_Ordner=externefestplatte.joinpath("Jahre")
if not nas_Monate_Ordner.exists():
makedirs(nas_Monate_Ordner)
if not nas_Jahre_Ordner.exists():
makedirs(nas_Jahre_Ordner)
if not externefestplatte_Monate_Ordner.exists():
makedirs(externefestplatte_Monate_Ordner)
if not externefestplatte_Jahre_Ordner.exists():
makedirs(externefestplatte_Jahre_Ordner)
#---------------------------Unterordner--------------------------------------------------------------------------------
ordner_jahr_gefunden =[file for file in listdir(fertigdaten) if file.endswith('_01.wrt')]
ordner_die_hinzugefuegt_werden=[]
for file in ordner_jahr_gefunden:
d=str(file).split("_")
del d[0],d[1]
ordner_die_hinzugefuegt_werden.append(d)
while len(ordner_die_hinzugefuegt_werden)>0:
for jahr in ordner_die_hinzugefuegt_werden[0]:
if not nas_Jahre_Ordner.joinpath(jahr).exists():
makedirs(nas_Jahre_Ordner.joinpath(jahr))
for jahr in ordner_die_hinzugefuegt_werden[0]:
if not externefestplatte_Jahre_Ordner.joinpath(jahr).exists():
makedirs(externefestplatte_Jahre_Ordner.joinpath(jahr))
del ordner_die_hinzugefuegt_werden[0]
except FileNotFoundError:
if externefestplatte.exists():
externefestplatte_Monate_Ordner = externefestplatte.joinpath("Monate")
externefestplatte_Jahre_Ordner = externefestplatte.joinpath("Jahre")
if not externefestplatte_Monate_Ordner.exists():
makedirs(externefestplatte_Monate_Ordner)
if not externefestplatte_Jahre_Ordner.exists():
makedirs(externefestplatte_Jahre_Ordner)
elif nas.exists():
nas_Monate_Ordner=nas.joinpath("Monate")
nas_Jahre_Ordner=nas.joinpath("Jahre")
if not nas_Monate_Ordner.exists():
makedirs(nas_Monate_Ordner)
if not nas_Jahre_Ordner.exists():
makedirs(nas_Jahre_Ordner)
def ermittelt_fehlende_Daten(nas, externefestplatte, fertigdaten):
"""Hier wird geprüft ob einer der drei Pfade nicht vorhanden ist sollte das so sein wird eine exeption geschmissen wo
dann geprüft wird ob der Ordner Fertigdaten vorhanden ist wenn ja wird geprüft ob die nas oder externefestplatte fehlt
und die entgegengesetzt operation trotzdem ausgeführt wenn Fertigdaten fehlt wird das Programm beendet."""
fehlende_fertigdaten_auf_nas = []
fehlende_fertigdaten_auf_externefestplatte = []
try:
verfuegbarere_fertigdatein = listdir(fertigdaten)
verfuegbarere_fertigdatein_in_nas = listdir(nas)
verfuegbarere_fertigdatein_in_externefestplatte = listdir(externefestplatte)
for i in verfuegbarere_fertigdatein:
if i not in verfuegbarere_fertigdatein_in_nas:
fehlende_fertigdaten_auf_nas.append(i)
if i not in verfuegbarere_fertigdatein_in_externefestplatte:
fehlende_fertigdaten_auf_externefestplatte.append(i)
return fehlende_fertigdaten_auf_nas, fehlende_fertigdaten_auf_externefestplatte
except FileNotFoundError:
if fertigdaten.exists():
if nas.exists():
verfuegbarere_fertigdatein = listdir(fertigdaten)
verfuegbarere_fertigdatein_in_nas = listdir(nas)
for file in verfuegbarere_fertigdatein:
if file not in verfuegbarere_fertigdatein_in_nas:
fehlende_fertigdaten_auf_nas.append(file)
return (fehlende_fertigdaten_auf_nas, None)
elif externefestplatte.exists():
verfuegbarere_fertigdatein = listdir(fertigdaten)
verfuegbarere_fertigdatein_in_externefestplatte = listdir(externefestplatte)
for file in verfuegbarere_fertigdatein:
if file not in verfuegbarere_fertigdatein_in_externefestplatte:
fehlende_fertigdaten_auf_externefestplatte.append(file)
return (None, fehlende_fertigdaten_auf_externefestplatte)
else:
sys.exit(-1) # Fertigdatenordner nicht vorhanden
def main():
ordner_erstellen(PFAD_ZUR_NAS,PFAD_ZUR_EXTERNEN_FESTPLATTE,PFAD_ZUR_FERTIGDATEN)
fehlenden_daten_nas, fehlenenden_daten_externefestplatte = ermittelt_fehlende_Daten(PFAD_ZUR_NAS,PFAD_ZUR_EXTERNEN_FESTPLATTE,PFAD_ZUR_FERTIGDATEN)
if __name__ == "__main__":
main()
Ich bin mir da momentan nicht ganz sichere meine Gedanken sind folgende:
Wenn Ich einmal gucke ob die Pfade vorhanden sind müsste es doch reichen -> da das Programm ja in wenigen Sekunden durchlaufen ist.
Beim Programmieren denke mich nur dann was passiert wenn genau in der Sekunde -> wo der Sprung zu nächsten Funktion geschickt zum Beispiel die Externefestplatte abgemacht wird -> das führt zu einem Fehler der dann wenn ICh nur einmal mit Try/Except arbeite nicht abgefangen wird .
Ich würde gerne eure Meinungen dazu hören.
Danke im vorraus!