Dateien auflisten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

So, das Problem konnte ich lösen. Manchmal findet man vor lauter Bäumen den Wald nicht mehr. Ich mache die Sortierung jetzt zu beginn, was definitiv auch mehr Sinn macht.

Eine Kleinigkeit habe ich aber noch. Bei einigen Ordnern habe ich eine abweichende Anzahl Ordner. Das heisst ich kann an einem Ort folgendes Bild haben:

1. Offerten
2. Bestellungen
3. Ausführungen

und bei anderen folgende Struktur der Ordnernamen

1. Offerten
2. Bestellungen
3. Reklamationen
4. Ausführungen

Ich sollte nun beim Filter einbauen, dass er mir nicht strickt nach dem Namen des Ordners z.B. "3. Ausführungen" sondern nur nach einem Teil des Namens z.B. "Ausführungen". Wie kann ich das machen?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich verstehe nicht wirklich, was Du nun machen willst.
Kannst Du für jeden Fall ein einfaches Beispiel posten, Verzeichnislisting vorher und nachher.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Also ich habe folgenden Code zur Verteilung meiner Dateien:

Code: Alles auswählen

from pathlib import Path

BASEPATH = Path("C:/Users/Startklar/Desktop/Belege")
FILTERS = [
    ("XBIT", "233-00408710", "Jahr 2022", "3.Ausführungen"),
]

def main():
    for place, number in FILTERS:
        destination = BASEPATH / place / number
        for sourcefile in BASEPATH.glob(f"*{number}*.pdf"):
            sourcefile.rename(destination / sourcefile.name)

if __name__ == "__main__":
    main()
Damit verschiebt er mir die Datei ganz genau in die entsprechenden Ordner und am Schluss in "3. Ausführungen". Es gibt aber nun einige wenige Order, in welchem der Ordner "Ausführungen" nicht die Nummer 3 sondern die Nummer 4 hat. Das heisst er müsste nur nach dem Wort "Ausführungen" suchen und die Datei dort ablegen und nicht nach "3. Ausführungen" weil es das nicht gibt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Code funktioniert so gar nicht, weil FILTERS aus 4-Tuplen besteht, Du aber nur 2 Variablen angibst.
Aber natürlich kannst Du per glob auch den Zielordner finden.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Danke, das habe ich bemerkt und behoben.

Aber noch einmal die Frage, wie muss ich den Code formatieren, dass er mir nur das "Ausführungen" sucht und nicht auch nach der Nummerierung?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie ich schon schrieb, ist `glob` die Lösung.
Antworten