Dateien sollte man mit dem folgenden Idiom öffnen:
Code: Alles auswählen
with open(...) as handler:
# handler ist hier file-Objekt und muss nicht mehr explizit geschlossen werrden
Wieso tust Du das nicht überall im Code?
- ``textdatei_write()`` ist kein guter Name! Zum einen hast Du da Denglisch, zum anderen ist das zu allgemein. Du schreibst dort doch Prüfsummen zu Dateien, also benenne das doch auch entsprechend. ``write_checksum_infos()`` z.B. (Allerdings müsste es sogar korrekter lauten: ``get_directory_entries_and_calc_checksum_and_write_infos()``. Mehr dazu ganz am Schluss meines Beitrags!)
- Ich würde den Aufruf von ``textdatei.write`` auch minimieren. Baue doch separat erst einmal den String zusammen und schreibe dann die komplette Zeile weg.
- Ich würde den Code von Modul-Ebene wegbekommen. Ich vermute irgend wie, dass Dir das auch schon x Mal gezeigt und gesagt worden ist
(Ach ich seh grad BlackJack hatte das schon genannt)
- Modul globale Objekte (``Ordner_List``) würde ich immer weit nach oben in der Datei stellen, also direkt unter die ``import``-Statements.
- Generell gefällt mir die Aufteilung nicht! Du fasst zu viel zusammen. Trenne doch besser das Auslesen eines Verzeichnisses vom Berechnen der Prüfsumme und dem Schreiben der Ergebnisse in eine Datei. Das macht das ganze besser wartbar und darüber hinaus auch flexibler. Du könntest dann leicht einen anderen Hash-Algorithmus wählen, die Ausgabe auf den Bildschirm oder in eine Datenbank lenken usw. Merke Dir die (Zwischen-)Ergebnisse einfach in einer passenden Datenstruktur (z.B. eine Liste von Tupeln o.ä.).