Ordner rekursiv nach Datei durchsuchen

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.
Antworten
Furbynat0r
User
Beiträge: 17
Registriert: Dienstag 27. Februar 2018, 09:43

Hallo zusammen,

ich möchte ein Skript schreiben, welches rekursiv nach einer Datei sucht und mir dann den Pfad + Dateinamen ausgibt. Das Script soll ab da anfangen, wo es abgelegt wurde.

Ich habe es schon grob hinbekommen, allerdings wird mir der Pfad dann ohne Unterordner angegeben.

Code: Alles auswählen

import os

search = 'Marken'

for root, dirs, files in os.walk("."):
    for file in files:
        if re.search('%s' % search , file):
            print(os.path.realpath(file))
Sieht jemand auf anhieb den Fehler?
Vielen Dank :)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

`os.walk` ist veraltet. Benutze pathlib.Path.rglob.

Code: Alles auswählen

from pathlib import Path

for path in Path('.').rglob("*Marken*"):
    print(path)
Bemerkung: man darf nicht einfach irgendeinen String als regulären Ausdruck nehmen, nur um nach diesem String zu suchen, denn Reguläre Ausdrücke haben viele Zeichen mit besonderer Bedeutung; benutze re.escape. Hier ist das aber gar nicht nötig, da mein einfach den in-Operator nutzen könnte. Ebenso unnötig ist es einen String mittels '%s' in den selben String zu wandeln.
Furbynat0r
User
Beiträge: 17
Registriert: Dienstag 27. Februar 2018, 09:43

Ahh alles klar.

Vielen Dank! :)
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ergänzend: ``%`` um Werte in Zeichenketten zu formatieren würde ich heute auch nicht mehr ohne guten Grund verwenden. Es gibt die `format()`-Methode auf Zeichenketten und ab Python 3.6 f-Zeichenkettenliterale.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten