ich habe eine Art "Datensave" mit Python gemacht, ich wollte allgemein mal eure Rückmeldungen dazu hören bzw. Verbesserungsvorschläge. Speziell beim Exceptionhandling bin ich mir fast sicher dass ich da einiges nicht beachtet habe.
In is_encrypted hast Du einen Pfad der True liefert einen der False liefert und einen der None liefert (bei None weiß der Leser nicht, ob das Absicht ist, oder ein Programmierfehler): die Funktion sollte immer True oder False liefern.
Ich finde das ja sehr suspekt, wenn ein Programm ungefragt irgendwelche Inputdateien löscht.
Du meinst den Fall, dass es weder ein Ordner noch eine .aes Datei ist? Dann würde ich wohl besser einfach nur prüfen ob es eine .aes Datei ist und dann das Ergebnis zurückgeben, oder? Oder wenn es nichts davon ist eine Exception werfen?
Ich wollte halt irgendwie versuchen das ganze mit so wenig Userinputs wie möglich zu machen, also Kennwort eingeben -> Verschlüsseln oder Kennwort eingeben -> entschlüsseln. Ich werde aber noch eine zweite Version mit einer Abfrage machen, ob die Quelldateien gelöscht werden sollen und bei der jetzigen Version einfach eine Ausgabe machen, dass die Quelldateien dabei gelöscht werden, dann ist es zwar immernoch ungefragt, aber nicht unbekannt. Danke
def main():
print(f"DataSave für {FOLDER_PATH} - 'q' zum beenden eingeben!")
if FOLDER_PATH.exists() or FOLDER_PATH.with_suffix(AES_EXTENSION).exists():
while True:
if is_encrypted(FOLDER_PATH):
password = getpass.getpass("Dateien sind verschlüsselt, bitte das Passwort zum entschlüsseln eingeben: ")
if password == 'q':
break
try:
decypt_file(FOLDER_PATH, password)
print("Datei erfolgreich entschlüsselt und verschlüsselte Quelldatei gelöscht.")
except ValueError:
print("Falsches Passwort!")
else:
password = getpass.getpass("Dateien sind unverschlüsselt, bitte das Passwort zum verschlüsseln eingeben: ")
if password == 'q':
break
try:
encrypt_file(FOLDER_PATH, password)
print("Datei erfolgreich verschlüsselt und unverschlüsselte Quelldatei gelöscht.")
except FileNotFoundError:
print("Datei wurde nicht gefunden!")
else:
print("Der Pfad existiert nicht!")