Kurzüberblick
Ein Python-Skript, das die Dateien eines Testordners als CSV-Prüfliste ausgibt. Quelldateien bleiben unverändert.
Fortgeschrittener Einstieg · Kleines SkriptVor dem Start
- Python 3 und ein Terminal; keine zusätzlichen Python-Pakete
- Eigener Testordner mit künstlichen Dateien, kein vertrauliches Produktivverzeichnis
- Texteditor zum Speichern als eingang_pruefen.py
- Tabellenprogramm für die erzeugte CSV-Datei
Drei kleine Aufgaben mit klaren Grenzen.
Ein Dateieingang lässt sich regelmäßig auf neue Unterlagen prüfen. Wiederkehrende Messwerte lassen sich zu einer Tagesübersicht zusammenfassen. Ein fertiger Export lässt sich auf fehlende Pflichtangaben kontrollieren. Gemeinsam ist diesen Aufgaben: Eingang, Regel und erwartetes Ergebnis lassen sich beschreiben.
Weniger geeignet für den ersten Versuch sind Entscheidungen über Zahlungen, vertrauliche Freigaben oder unklare Fristen. Automatisiere zunächst das Zusammenstellen und Kennzeichnen, nicht die endgültige fachliche Entscheidung. Unser Beispiel unterscheidet deshalb nur Dateitypen. Es behauptet nicht, den Inhalt eines Dokuments verstanden zu haben.
Eine Prüfliste ohne Änderungen an den Quellen.
Speichere den folgenden Code als eingang_pruefen.py außerhalb des Eingangsordners. Das Skript betrachtet nur Dateien unmittelbar in diesem Ordner, nicht dessen Unterordner. Es überspringt symbolische Verknüpfungen und verweigert das Überschreiben einer vorhandenen Ausgabedatei. Dateinamen werden für die Anzeige in Tabellen vorsorglich als Text entschärft.
import csv
import sys
from pathlib import Path
if len(sys.argv) != 3:
raise SystemExit('Aufruf: python3 eingang_pruefen.py EINGANG AUSGABE.csv')
quelle = Path(sys.argv[1]).resolve(strict=True)
ziel = Path(sys.argv[2]).resolve()
if not quelle.is_dir():
raise SystemExit('Der Eingang muss ein Ordner sein.')
if ziel == quelle or quelle in ziel.parents:
raise SystemExit('Ausgabe außerhalb des Eingangsordners wählen.')
def tabellentext(text):
return "'" + text if text.lstrip().startswith(('=', '+', '-', '@')) else text
zeilen = []
for datei in sorted(quelle.iterdir()):
if datei.is_symlink() or not datei.is_file():
continue
typ = datei.suffix.lower()
status = 'Inhalt prüfen' if typ == '.pdf' else 'Dateityp prüfen'
zeilen.append([tabellentext(datei.name), datei.stat().st_size, status])
with ziel.open('x', encoding='utf-8-sig', newline='') as ausgabe:
csv.writer(ausgabe, delimiter=';').writerows(
[['Dateiname', 'Bytes', 'Prüfstatus'], *zeilen])
print(f'{len(zeilen)} Dateien erfasst. Quellen unverändert.')Zum Nachlesen: Python: CSV-Dateien mit der Standardbibliothek
Ausführen und Ergebnis kontrollieren.
- Erstelle einen Testordner mit zwei PDFs, einer Textdatei und einem leeren Unterordner. Verwende keine echten Kundendaten.
- Prüfe mit „python3 --version“, ob Python verfügbar ist. Unter Windows kann der entsprechende Aufruf „py -3“ lauten.
- Starte im Terminal „python3 eingang_pruefen.py /voller/pfad/eingang /voller/pfad/pruefliste.csv“. Ersetze beide Beispielpfade und setze Pfade mit Leerzeichen in Anführungszeichen.
- Öffne die CSV mit UTF-8 und Semikolon als Trennzeichen. Erwartet werden drei Datenzeilen; der leere Unterordner ist absichtlich nicht enthalten.
- Starte denselben Aufruf erneut: Eine bereits vorhandene Ausgabe muss zum Abbruch führen. Verwende für den nächsten Lauf bewusst einen neuen Dateinamen.
- Kontrolliere den Quellordner: Namen, Inhalte und Anzahl der Dateien müssen unverändert sein. Prüfe auch den Fall eines leeren Eingangs.
Erst danach regelmäßig laufen lassen.
Ein geplanter Lauf benötigt einen festen Benutzer, absolute Pfade und eine nachvollziehbare Fehlermeldung. Er darf nicht unbemerkt in einem anderen Arbeitsverzeichnis landen. Bevor du einen Zeitplan einrichtest, lege fest, wie neue Ausgabedateien benannt werden und wer Fehler bemerkt. Dieses Beispiel erzeugt bewusst keinen versteckten Hintergrunddienst.
Messe den tatsächlichen Nutzen: Wie häufig war die manuelle Kontrolle nötig, wie lange dauert die Restprüfung, und welche Fehler verhindert die Liste? Erweitere nur, wenn die Antwort überzeugt. Verschieben, Löschen, Mailversand oder automatische Freigaben sind neue Funktionen mit eigenen Tests – kein beiläufiger Zusatz.
Zum Prüfen
- Die Ausgabe enthält die erwartete Anzahl Dateien.
- Quelldateien bleiben unverändert.
- Ein vorhandener Bericht wird nicht überschrieben.
- Fehler sind sichtbar; die fachliche Prüfung bleibt zugeordnet.
Hinweise
Das Skript liest keine Dokumentinhalte und erkennt weder Rechnungen noch Fristen. Auch eine Dateiendung .pdf beweist keinen gültigen PDF-Inhalt. Nutze es zuerst ausschließlich in einem Testverzeichnis.
Unterstützung bei der Umsetzung
Wir identifizieren passende Routinen, verbinden sie mit deinen bestehenden Systemen und ergänzen Protokollierung, Fehlerbehandlung und klare Verantwortlichkeiten.
Projekt besprechenBeratung & Projekte kennenlernen